Integer totalAgeReduce = roster
.stream()
.map(Person::getAge)
.reduce(
0,
(a, b) -> a + b);
List<Integer> numbers = Arrays.asList(new Integer[] { 1, 2, 3, 4, 5 });
Optional<Integer> sum = numbers.stream().reduce((a, b) -> a + b);
System.out.println(sum.get());
Stream.reduce 方法
Stream.reduce 方法是通用的归约操作。考虑以下管道,它计算集合花名册中男性成员年龄的总和。它使用了 Stream.sum 归约操作:
Integer totalAge = roster
.stream()
.mapToInt(Person::getAge)
.sum();
将以下管道与使用Stream.reduce操作计算相同值的管道进行比较:
Integer totalAgeReduce = roster
.stream()
.map(Person::getAge)
.reduce(
0,
(a, b) -> a + b);
(a, b) -> a + b
Stream.collect
能够提供更好的性能,因此或许可以考虑一下它呢? - Marko Topolnika+b=b+a
。 - ahanin