JDK8-2-流(2.3)- 流操作-reduce (归约)

JDK8-2-流(2.3)- 流操作-reduce (归约)

reduce 可以把一个流中的元素组合起来,例如可以计算一组数的总和

T reduce(T identity, BinaryOperator 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);

你可能感兴趣的:(JavaSE,java,算法,开发语言)