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);
JDK8中的StreamAPI的reduce方法用于将流中的元素进行组合,例如可以计算数字总和或找到最大值。例如,通过传入初始值0和一个累加器(a,b)->a+b,可以求得数组[1,2,3]的和为6;若要找最大值,可以使用(b>a?b:a)作为比较器,或者直接使用Integer::max方法简化代码。
1993

被折叠的 条评论
为什么被折叠?



