最大值和最小值
原来,只要用归约就可以计算最大值和最小值了!让我们来看看如何利用学到的reduce来计算流中最大或最小元素。正如你前面看到的,reduce接收两个参数:
- 一个初始值
- 一个Lambda来把两个流元素结合起来并产生一个新值。
Lambda是一步步用加法运算符应用到流中每个元素的,如下图所示。因此,你需要一个给定元素能够返回最大值Lambda。reduce操作会考虑新值和流中下一个元素,并产生一个新的最大值,直到整个流消耗完!你可以像下面这样使用reduce来计算流中的最大值,如图所示。
Optional<Integer> max = numbers.stream().reduce(Integer::max);
要计算最