Java8 Stream API之reduce使用说明
简介
reduce()
是 Stream API 的一个终端操作,它能够将 stream 中所有元素反复结合起来,得到一个最终值。
语法
Optional<T> reduce(BinaryOperator<T> accumulator);
T reduce(T identity, BinaryOperator<T> accumulator);
<U> U reduce(U identity, BiFunction<U, ? super T, U> accumulator, BinaryOperator<U> combiner);
参数说明
accumulator
:接收两个参数,处理并返回一个同类型的值。identity
:起始值。combiner
:合并操作。
示例说明
示例1:求和
int sum = Stream.of(1, 2, 3, 4, 5)
.reduce(0, Integer::sum);
System.out.println(sum);
输出结果为:
15
解释:
使用起始值 0
,确保 reduce() 能够正确执行。然后,reduce()
将 0
作为第一个操作数传递给累加器方法 Integer::sum
,也就是计算出 0+1=1
。然后,1
作为第一个操作数,继续传递给Integer::sum
方法,也就是计算出 1+2=3
,以下同理,最终得到结果为 15
。
示例2:求最大值
Optional<Integer> max = Stream.of(1, 2, 3, 4, 5)
.reduce(Integer::max);
max.ifPresent(System.out::println);
输出结果为:
5
解释:
这里使用了一个 Optional
类型,因为我们并不确定操作前的流中是否有值,如果没有值,那么 max
会返回一个空的 Optional
对象,否则返回一个包含最大值的 Optional
对象。
同样地,使用 reduce()
求最小值也是类似的:
Optional<Integer> min = Stream.of(1, 2, 3, 4, 5)
.reduce(Integer::min);
min.ifPresent(System.out::println);
输出结果为:
1
总结
reduce()
是 Stream API 中一个非常强大的操作,可以实现对 stream 中的元素进行累加、计数、求最值等多种操作。同时,Java8 还提供了 reduce()
的其他重载函数,实现多种操作的灵活组合。因此,熟练掌握 reduce()
操作,是 Java8 开发中非常重要的一点。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java8 Stream API之reduce使用说明 - Python技术站