Lambda的reduce元素規約

2021-10-08 13:23:13 字數 1229 閱讀 2529

規約:大致可以理解為將乙個陣列或集合轉換成乙個string或integer型別的乙個物件。最終只拿到乙個結果。

關鍵字:reduce

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

若是整數型別求和 (integer),b和c 可換成方法引用 integer::sum

先回顧一下map: stream().map 可以把陣列中的元素從一種型別轉換成另一種型別,也可以將多型別的集合變成單純的只有一種型別的集合。

}規約並行:

我們都知道,stream()是可以並行的。就是可以充分利用cpu核數發揮cpu執行的最大效率。

並行關鍵字:parallelstream()

以上圖所示,並行會對過程分組計算,之後得出兩組,乙個三,乙個七,之後使用合併器,對兩組結果進行累加計算得出最後結果。所謂合併器,就是對並行的每組結果進行累加。

integer reduce2 = list.parallelstream().map(people::getage).reduce(0, integer::sum,integer::sum);

system.out.println(reduce2); //105

上面reduce第三個引數 integer::sum 就是合併器

如果資料量較大時推薦使用parallelstream()並行運算,可以充分發揮cpu效能,提高執行效率。

integer red = list.stream().reduce(0, (a, people) -> a + people.getage(), integer::sum);

system.out.println(red);//105

上面的reduce第三個引數就是合併器的第二個功能了: 當返回結果不一致時可以用合併器進行乙個轉型。

綜上:當對陣列進行累加操作時推薦使用規約。尤其推薦並行規約。

合併器:

利用lambda操作容器元素

作文環境 很多容器不支援 直接元素訪問 所以必須使用range based for迴圈或iterator。其他內容簡述,接下來介紹三種快捷操作方法,用起來很溜,不論從 效能還是藝術效果都值得學習。在這裡插入 片 原碼 std mapfloat map sf for auto elem map sf ...

reduce函式的用法

首先看reduce函式的官方解釋 python2 reduce reduce function,sequence initial value from left to right,so as to reduce the sequence to a single value.for example,r...

非常強力的reduce

array 的方法 reduce 是乙個有非常多用處的函式。它乙個非常具有代表性的作用是將乙個陣列轉換成乙個值。但是你可以用它來做更多的事。function map arr,exec var arr map 10,20,30,50 function item console.log arr 20,4...