Java Stream教程之数字求和

作者 | 2020年6月8日

前言

在本教程中我们将演示多种通过Stream API对数字求和的方法。

为了简单起见,我们在示例中只使用整数int类型作演示,但这些方法同样适用于long和double数据类型。

2. 使用Stream.reduce()方法

Stream.reduce()方法的参数如下:

  • 第一个参数,初始值

  • 第二个参数,接受一个BiFunction作为参数,如果你不了解BiFunction,请查看本站的 BiFunction教程

在下例中BiFunction接受a,b两个参数,然后返回a+b:

List<Integer> integers = Arrays.asList(1, 2, 3, 4, 5);
Integer sum = integers.stream()
  .reduce(0, (a, b) -> a + b);

// 下面是等价的写法:a+b替换为方法引用Integer::sum
List<Integer> integers = Arrays.asList(1, 2, 3, 4, 5);
Integer sum = integers.stream()
  .reduce(0, Integer::sum);

3. 使用Stream.collect()方法

List<Integer> integers = Arrays.asList(1, 2, 3, 4, 5);
Integer sum = integers.stream()
  .collect(Collectors.summingInt(Integer::intValue));

与上面类似,Collectors类还提供sumsumLong()和summingDouble()方法分别用于计算long和double类型的和。

发表评论

电子邮件地址不会被公开。 必填项已用*标注