三种重载的方法
- 第一种
Optional<T> reduce(BinaryOperator<T> accumulator);
方法接受一个BinaryOperator类型的lambada表达式, 常规应用方法如下:
List<Integer> list = Arrays.asList(1,2,3,4);
int result = list.stream().reduce((a,b) -> a+b).get();
System.out.println(result);
代码实现了对list 中的元素累加。lambada表达式的a参数是表达式的执行结果的缓存,也就是表达式这一次的执行结果会被作为下一次执行的参数,而第二个参数b则是依次为stream中每个元素。如果表达式是第一次被执行,a则是stream中的第一个元素。
- 第二种
T reduce(T identity, BinaryOperator<T> accumulator);
方法接受一个identity和BinaryOperator类型的lambada表达式, 与第一个签名的实现的唯一区别是它首次执行时表达式第一次参数并不是stream的第一个元素,而是通过签名的第一个参数identity来指定。我们来通过这个签名对之前的求和代码进行改进。
List<Integer> list = Arr