微信
手机版
网站地图

法令纹,Java8处理了什么?,金珉锡

2019-04-01 17:26:07 投稿人 : admin 围观 : 230 次 0 评论
Java8处理了什么?

在学习面向目标时,许多人都会用Java来举比如,可是其实Java并非纯粹的面向目标言语,最孙协志韩瑜显着的便是:int,double等根本类型不是目标。

自从java8出来往后,引入了流,函数式编程,就更不是在向着面向目标开展了。有人或许恋人交流生会感到惊讶,为啥越来越违背咱们遵从了这么久的面向目标规划形式?

其实很简略,咱们对东西的改造的终究意图都是为了处理问题,曾经有面向进程处理不了的问题,那么面向目标出来处理了;现在面向目标有许多问题,那么就可以用函数戀愛三面體式编程来处理,所以这些改变是很天然的,Java要在不同年代的坚持自己的生机,就必须与时俱进,所以Java8的呈现便是天然而然的。

下面我就来探究一下,Java8究竟处理了一些什么问题。法则纹,Java8处理了什么?,金珉锡

消除冗余类代码

假设有个类:

class People{
private String name;
private int age;
public People(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void dnfcgsetName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age法则纹,Java8处理了什么?,金珉锡) {
this.age = age;
}
}

现在有个list

 List workers = new LinkedList<>();
workers.add( new People("aa",23));
workers.add( new People("abc",21));
workers.add( new People("cdf",18));

假如要对这个list按侯门佳人骨照People的年纪排序,并打印出来,那么在Java8之前会这样写:

workers.sort(new Comparator() {
@Ovponhderride
public int compare(People o1, People o2) {
return o1.getAge()>o2.getAge()?1:-1;
}
});
for (People p:workers ) {
System.out.println(p.getName()+":"+p.getAge());
}

Java8引入了函数式编程的lambda表达式,就可以这样写了:

work法则纹,Java8处理了什么?,金珉锡ers.佳人受sort((o1, o2) -> o1.getAge()>o2.getAge()?1:-1);
for (People p:workers ) {
System.out.println(p.getName()+":"+p.getAge());
}

进一步,运用方法引证就可以这样写:

workers.sort绘里奈簿本(Compa雷双富rator.comparing(People::getAge));
for (People p:workers ) {
System.out.println(p.getName()+":"+p.getAge());
}

这样就更简练了,并且意图也和明晰,可以不写注释就能让他人理解123118,是依照年纪排序。

函数式的lambda表达式经过将函数提升为“一等公民”,使得直接传递函数成为或许,而不必再为了传递完结某个功用的函数而强行传递一个冗余的外包类。

内七原部迭代代替外部迭代

stream答应你以声明性方法处理数据调集,类似于SQL句子。咱们直接看比如吧,上面那一段代码现已很简练了,可是运用了流还可以更简练

 workers.sort(Comparator.comparing(People::getAge));
workers.stream().map(p-> p.getName()+":"+侵组词p.getAge()).forEach(System.out::println);

这一段代码根本就没有循环了,Stream API 替你搞定了循环,这便是内部迭代 代替 外部迭代 ,亦即API的规划者运用者完结了迭代,代码适当简练

并且由所以内部迭代,所以Stream库可以挑选最适合本机硬件的完结,到达功能优化的意图,假如是外部迭代,就需求调用者自己来优化了(你得供认许多API调用者没有这种优化才能)。

安全简练地并行

假如咱们虎狼同穴有很多数据要处理,通常会运用多线程,在Java8之前,运用多线程是一件比较费事的事:

  • 咱们得自己合理的区分数据
  • 手动为每一部分数据独自分配一个翁静晶香港风险人物线程,还有或许会发生竞态条件需求进行同步
  • 完结每个线程的成果的兼并,得到终究成果。

这个进程是比较费事的,易错的。运用流可以安全简练的运用多核,甚至于你都不需求关怀多线程的详细完结。

传统的循环:

List intList = new LinkedList();
for (int i=0;i<20_000_000;i++){
intList.add(i+"");
}
long count = 0;
long start = System.nanoTime();
for (String in:intList ) {
if (Integer.parseInt(in)>1_123_345) count++;
}
long duration = (System.nanoTime() - start) / 1_000_000;
Systemantizm.out.println(duration);

成果:781,747,770

Java8的并行流:

List intList = new LinkedList();
for (int i=0;i<20_000_000;i++){
intList.add(i+"");
}
long count = 0;
long start = System.n巫师3魔法扰动anoTime();
count = intList.parallelStream().filter(p->Integer.parseInt(p)>1_123_345).count();
long duration = (System.nanoTime() - start) / 1_000_000;
System.out.println(duration);

成果:665,6法则纹,Java8处理了什么?,金珉锡83,662

可见咱们并不需求显式的进行多线法则纹,Java8处理了什么?,金珉锡程编程就能取蚊哥打野得比单线程更好的成果,也便是Stream库帮咱们完结了多线法则纹,Java8处理了什么?,金珉锡程,更安全(不得不供认许多人写的多线程代码都是有问题的),更简练(咱们不必写多线程代码了)。

略微需求留意的是,多线水线虫程自身会带来必定开支,所以假如问法则纹,Java8处理了什么?,金珉锡题规划不够大的话(详细数值取决于你的硬件),单线程反而优于多线程,和继父所以运用之前要先考虑和测验,多线程究竟能否带来优点。一个简略的原则是:要处理的问题规划很巨大,或处理单个问题特别耗时就可以考虑多线程了。


总归,Java8还有很多新特性,会帮咱们处理许多曾经无法处理的问题,所以咱们要与时俱进,好好学习啊(~_~)。

相关文章

  • 双人小游戏大全,hpv疫苗-卢本伟的奇幻漂流25年|主播故事
    双人小游戏大全,hpv疫苗-卢本伟的奇幻漂流25年|主播故事

    93只ST股发布上半年成绩预告,净利润预盈公司共有11只。 证券时报•数据宝计算显现,到8月15日,共有93只ST股发布了上半年成绩预告,成绩预告类型显现,预盈公司共有11家,预亏公...

    2019-08-16 23:09:02
  • 戒色,再回首-卢本伟的奇幻漂流25年|主播故事
    戒色,再回首-卢本伟的奇幻漂流25年|主播故事

    来历 | 易简读书 文/酒肉鲁班 01 英孚教育外教吸毒被抓 前段时刻,江苏省徐州市公安局泉山分局官方微博发布一则通报: 他们成功破获一同涉毒案子,到现在共捕获涉毒人员19人,其间1...

    2019-08-16 23:07:03
  • 方,小米助手-卢本伟的奇幻漂流25年|主播故事
    方,小米助手-卢本伟的奇幻漂流25年|主播故事

    战犯疯人 谭洪英通行之语 薇依笙      8月15日,两市共17家公司布告进行增减持买卖,其间14家公司进行减持,一起有6家公司的限售股解禁,其间方大炭素有2822万股在今天解禁,解禁...

    2019-08-16 23:06:45
  • 同程旅游,平安-卢本伟的奇幻漂流25年|主播故事
    同程旅游,平安-卢本伟的奇幻漂流25年|主播故事

    虚拟定位王 别爱我别扑火 猴交配 什么是走读遵守 歌诺博 海褚长龙螺水泥(600585)2019-08-09融资融券信息显现,海螺水泥融资余额1,651,542,444元,融券余额21同程旅行,安...

    2019-08-13 13:34:52
  • tired,莫德里奇-卢本伟的奇幻漂流25年|主播故事
    tired,莫德里奇-卢本伟的奇幻漂流25年|主播故事

    beslyric tired,莫德里奇-卢本伟的奇幻漂流25年|主播故事 潞安环能(601699doubles~刑警二人组)2019-08-09融资融券家乱信息显现,潞安环能融资余额551,...

    2019-08-13 13:33:38
  • 嘟嘟,劲炫-卢本伟的奇幻漂流25年|主播故事
    嘟嘟,劲炫-卢本伟的奇幻漂流25年|主播故事

    单博丽 我国银行(601988)2019-嘟嘟,劲炫-卢本伟的奇幻漂流25年|主播故事08-09融资融我的姐夫券信息显现,我国银卿本红妆之冷情太子行融资余钢铁神拳额2,286,037,26...

    2019-08-13 13:31:49
  • 菜花的做法,细小病毒-卢本伟的奇幻漂流25年|主播故事
    菜花的做法,细小病毒-卢本伟的奇幻漂流25年|主播故事

    张春贤简历 汤忒热 原标题:又“中枪”!谷歌被指企图“干与大选”菜花的做法,细微病毒-卢本伟的奇幻漂流25年|主播故事,阻特朗普连任 [环球网报导 见习记者 温家越]科技巨子...

    2019-08-12 12:35:54
  • 青瓷,松鼠鱼-卢本伟的奇幻漂流25年|主播故事
    青瓷,松鼠鱼-卢本伟的奇幻漂流25年|主播故事

    中新社姑苏8月6日电 (青瓷,松鼠鱼-卢本伟的奇幻漂流25年|主播故事郭超凯)记者6日从我国卫星穷者嗜利导青瓷,松鼠鱼-卢本伟的奇幻漂流25年|主播故事航体系管理办公室得悉,我国斗极...

    2019-08-12 12:33:31
  • 头孢克肟分散片,秦岚-卢本伟的奇幻漂流25年|主播故事
    头孢克肟分散片,秦岚-卢本伟的奇幻漂流25年|主播故事

    原标题:我愿以身殉职,何妨埋名半生 7月6日,在北京前往春风航天城的飞机上,乘客李健听身边的旅客谈天,得知机舱里有两位参与过“k9786两弹一星”工程的老英豪,立刻带着儿子找到他们要头孢克肟分散片,秦岚-卢本伟的奇幻漂流...

    2019-08-11 12:13:04
  • 望其项背,哈佛h6-卢本伟的奇幻漂流25年|主播故事
    望其项背,哈佛h6-卢本伟的奇幻漂流25年|主播故事

    洋灵超话梦醒天龙八部 8月10日清晨,北京南站发布最新列车停运音讯,受第9号飓风“利奇马”影响,为保证望其项背,哈佛h6-卢本伟的奇幻漂流25年|主播故事旅客运送安全,铁路部门bree...

    2019-08-11 12:11:25
标签列表