前言
在本教程中我们将演示多种通过Stream API对数字求和的方法。
为了简单起见,我们在示例中只使用整数int类型作演示,但这些方法同样适用于long和double数据类型。
2. 使用Stream.reduce()方法
Stream.reduce()方法的参数如下:
第一个参数,初始值
第二个参数,接受一个BiFunction作为参数,如果你不了解BiFunction,请查看本站的 BiFunction教程
在下例中BiFunction接受a,b两个参数,然后返回a+b:
List integers = Arrays.asList(1, 2, 3, 4, 5);
Integer sum = integers.stream()
.reduce(0, (a, b) -> a + b);
// 下面是等价的写法:a+b替换为方法引用Integer::sum
List integers = Arrays.asList(1, 2, 3, 4, 5);
Integer sum = integers.stream()
.reduce(0, Integer::sum);
3. 使用Stream.collect()方法
List integers = Arrays.asList(1, 2, 3, 4, 5);
Integer sum = integers.stream()
.collect(Collectors.summingInt(Integer::intValue));
与上面类似,Collectors类还提供sumsumLong()和summingDouble()方法分别用于计算long和double类型的和。