Java8 归约 reduce
本节将看到如何把一个流中的元素组合起来,使用reduce操作来表达更复杂的查询,比如“计算菜单中的总的卡路里”或“菜单中卡路里最高的菜时哪一个”。此类查询需要将流中所有元素反复结合起来,得到一个值,比如一个Integer。这样的查询可以被归类为归约操作(将流归约成一个值)。用函数式编程语言的术语来说,这称为折叠(fold),因为你可以将一个操作看成一张长长的纸(你的流)反复折叠成一个小方块,而这就是折叠操作的结果。
元素求和
在我们研究如何使用reduce方法之前,先来看看如何使用for-each循环来对数字列表中的元素求和:
Int sum = 0;
for (int x : numbers)
Sum += x;
numbers中的每一个元素都用加法运算符反复迭代来得到结果。通过反复使用加法,你把一个数字列表归约