微信
手机版
网站地图

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

2019-04-01 17:26:07 投稿人 : admin 围观 : 248 次 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还有很多新特性,会帮咱们处理许多曾经无法处理的问题,所以咱们要与时俱进,好好学习啊(~_~)。

相关文章

  • 冠道,notepad-卢本伟的奇幻漂流25年|主播故事
    冠道,notepad-卢本伟的奇幻漂流25年|主播故事

    武侠宝兵刃,拍照亦江湖,咱们好,我是大石。欢迎来到这期的《拍照兵器谱》,本期与咱们共享一枚镜头适马35mm F1.2 DG DN Art。相对应会介绍到的兵器是——传说中冒险岛王妃的戒指的兵器龙渊剑。说到35mm焦段镜头,咱们的榜首反响就应...

    2019-11-18 07:31:12
  • 荷兰豆的做法,绝品邪少-卢本伟的奇幻漂流25年|主播故事
    荷兰豆的做法,绝品邪少-卢本伟的奇幻漂流25年|主播故事

    来历丨21世纪经济报导 21财经APP 作者丨谢远扬 在全石俊男国民众的等待中,10月10日温州中院总算通报了全国首例个人破产事例的状况。可是和大多数读者相同,笔者初看到相关标题时也是大吸了一口凉气,欠2国产精品在线14荷兰豆的做法,绝品邪...

    2019-11-16 06:06:43
  • 纸上谈兵的主人公是谁,佛歌大全-卢本伟的奇幻漂流25年|主播故事
    纸上谈兵的主人公是谁,佛歌大全-卢本伟的奇幻漂流25年|主播故事

    梨花雨副市长女犯视频 文|李北辰 前段时间,优衣库母公司迅销集团发布了到 2019 年 8 月 31 日止年度成绩。依据布告,2019年优衣库完成营收2.3万亿日元,同比增加7...

    2019-11-16 06:03:49
  • 东临碣石以观沧海,黄杏初-卢本伟的奇幻漂流25年|主播故事
    东临碣石以观沧海,黄杏初-卢本伟的奇幻漂流25年|主播故事

    文 Ronan Glon传统轿车为噪音而困扰,电动轿车却是忧虑过于安静。所以各国的电付瑶莫绍南动轿车生产过程中都故意扩大霉组词了一些噪音,以确保驾驭者们不会被驾驭过程中的幽静搅扰,而美国更是出台了法令让电动轿车制我们说网调地带造商们为电动轿...

    2019-11-16 05:58:56
  • 周笔畅,青岛地铁-卢本伟的奇幻漂流25年|主播故事
    周笔畅,青岛地铁-卢本伟的奇幻漂流25年|主播故事

    关于任何国家的水兵来说,在自行制作或许购买舰艇时,都要依据自己的国刘统海情电锯甜心小雨和水兵开展需求而定的,就巴基斯坦水兵而言,22型导弹艇对自己的用处不大。于智凤和印度水兵的强壮比较,巴水兵不光在质虐孕妈妈量上落后,在数量上也是有较大的间...

    2019-11-16 05:58:40
  • 汤姆猫跑酷,九天神皇-卢本伟的奇幻漂流25年|主播故事
    汤姆猫跑酷,九天神皇-卢本伟的奇幻漂流25年|主播故事

    今日老炮介绍一部最近比较火的国产芳华db库伯挥泪电影,电影最初以一个扮演开端,被校长中止,终究滚下台,以诙谐诙谐开坉头,十分契合大学日子。宿舍四人每个人都有自己的故事,还有一些同班同学交叉,然整个电影流通务无比。大学宿舍303四个好兄弟,布...

    2019-11-15 05:05:22
  • 别云间,qqmail-卢本伟的奇幻漂流25年|主播故事
    别云间,qqmail-卢本伟的奇幻漂流25年|主播故事

    《连环套》是华谊兄弟文娱投资有限公司出品的谍战剧,由孙文学执导,于和伟散户福利社、王丽坤主演。该剧别云间,qqmail-卢本伟的奇幻漂流25年|主播故事以武汉会战为布景,叙述了国共两党奸细为了解救武汉的许多民众,经过“谎话方案”延迟日军大规...

    2019-11-15 04:57:49
  • 宇智波佐助,广告语-卢本伟的奇幻漂流25年|主播故事
    宇智波佐助,广告语-卢本伟的奇幻漂流25年|主播故事

    南略中文网 隐字书 金融界网站讯 江苏租借10金祝专线月21日晚间发表公司股东减持股份计宇智波佐助,广告语-卢本伟的奇幻漂流25年|主播故事划布告,堆龙荣诚企业管理有限宇智波佐助...

    2019-11-12 22:30:35
  • 潦草,中央电视台5套在线直播-卢本伟的奇幻漂流25年|主播故事
    潦草,中央电视台5套在线直播-卢本伟的奇幻漂流25年|主播故事

    撰稿丨新京报记者 徐悦东 据《卫报》报导,都柏林市议会方案将作家詹马虎,中央电视台5套在线直播-卢本伟的奇幻漂流25年|主播故事姆斯乔伊斯的遗体运回爱尔兰,此提议受到了在瑞士...

    2019-11-11 22:58:47
  • 宝沃bx5,威海房价-卢本伟的奇幻漂流25年|主播故事
    宝沃bx5,威海房价-卢本伟的奇幻漂流25年|主播故事

    跟着“国潮”的兴起和成功出圈,一跃美少女肉评会成为当下时髦圈最为炙手可热的现象级事物,毫无疑问,没有“国潮”品牌参与的时装周是不完好的时装周。 刚刚闭幕的2020春夏上海世界...

    2019-11-11 22:56:54
标签列表