JDK8-2-流(2.3)- 流操作-reduce (归约)
reduce 可以把一个流中的元素组合起来,例如可以计算一组数的总和
T reduce(T identity, BinaryOperator<T> accumulator);
例1 对数组中数字求和:
Integer sum = Arrays.asList(1, 2, 3).stream()
.reduce(0, (a, b) -> a + b);
System.out.println(sum);
6
代码块
(a, b) -> a + b
可以简化为:
Integer::sum
以上代码可以解释为:
T sum = identity;
for (T element : this stream)
sum = accumulator.apply(sum, element)
return sum;
例2 找出数组中数字最大值:
Integer num = Arrays.asList(1, 2, 3).stream()
.reduce(0, (a, b) -> b > a ? b : a);
System.out.println(num);
可以简写成:
Integer num2 = Arrays.asList(1, 2, 3).stream()
.reduce(0, Integer::max);