归约:将流中所有元素反复结合得到一个新值,这样的查询可用被归类为规约操作(将流规约成一个值)。用函数式编程语言的术语来说,这称为折叠。
数值类型集合:
- 元素求和
Integer sum = numbers.stream().reduce(0, (a, b) -> a + b);
log.debug("sum 操作得到:[{}]", sum);
// 由于没有给定初始值,并且不能保证流中一定有元素,所以返回Optional<Integer>
Optional<Integer> reduce = numbers.stream().reduce((a, b) -> a + b);
log.debug("sum 操作得到:[{}]", reduce.get());
sum = numbers.stream().reduce(0,Integer :: sum );
log.debug("sum 操作得到:[{}]", sum);
// 获取peoples集合中所有人年龄的和
sum = peoples.stream().map(people -> people.getAge()).reduce(0, Integer::sum);
log.debug("年龄总和:[{}]", sum);
- 最大值
Optional<Integer> max = numbers.stream().reduce((a, b) -> a > b ? a : b);
log.debug(