日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lambda的reduce元素规约

發(fā)布時間:2023/12/31 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lambda的reduce元素规约 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

規(guī)約:大致可以理解為將一個數(shù)組或集合轉(zhuǎn)換成一個String或integer類型的一個對象。最終只拿到一個結(jié)果。

關(guān)鍵字:reduce

語法:reduce(a,(b,c)->{b+c});

  • a:規(guī)約初始值
  • b:階段性的累加結(jié)果
  • c:當前遍歷的元素

若是整數(shù)類型求和 (Integer),b和c 可換成方法引用 Integer::sum

?

?

?

先回顧一下map: stream().map 可以把數(shù)組中的元素從一種類型轉(zhuǎn)換成另一種類型,也可以將多類型的集合變成單純的只有一種類型的集合。

public class Reduce {public static void main(String[] args) {People p=new People("小明",19,"man");People p2=new People("小花",16,"man");People p3=new People("小剛",17,"man");People p4=new People("小龍",15,"man");People p5=new People("小新",20,"man");People p6=new People("小舞",18,"woman");List<People> list =new ArrayList<>();list.add(p);list.add(p2);list.add(p3);list.add(p4);list.add(p5);list.add(p6);Integer res = list.stream().map(People::getAge).reduce(0,(a,b)->a+b);System.out.println(res);//105Integer reduce = list.stream().map(People::getAge).reduce(0, Integer::sum);System.out.println(reduce); //105}}

規(guī)約并行:

我們都知道,stream()是可以并行的。就是可以充分利用cpu核數(shù)發(fā)揮cpu運行的最大效率。

并行關(guān)鍵字:parallelStream()

?

以上圖所示,并行會對過程分組計算,之后得出兩組,一個三,一個七,之后使用合并器,對兩組結(jié)果進行累加計算得出最后結(jié)果。所謂合并器,就是對并行的每組結(jié)果進行累加。

Integer reduce2 = list.parallelStream().map(People::getAge).reduce(0, Integer::sum,Integer::sum); System.out.println(reduce2); //105

上面reduce第三個參數(shù) Integer::sum 就是合并器

如果數(shù)據(jù)量較大時推薦使用parallelStream()并行運算,可以充分發(fā)揮cpu性能,提高運行效率。

?

Integer red = list.stream().reduce(0, (a, people) -> a + people.getAge(), Integer::sum); System.out.println(red);//105

上面的reduce第三個參數(shù)就是合并器的第二個功能了: 當返回結(jié)果不一致時可以用合并器進行一個轉(zhuǎn)型。

?

綜上:

當對數(shù)組進行累加操作時推薦使用規(guī)約。尤其推薦并行規(guī)約。

合并器:

  • 對并行的累加結(jié)果進行最后統(tǒng)計
  • 對于每組結(jié)果類型不一致時進行累加后轉(zhuǎn)型

?

總結(jié)

以上是生活随笔為你收集整理的Lambda的reduce元素规约的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。