規約:大致可以理解為將乙個陣列或集合轉換成乙個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...