reduce() 是 Stream API 的一个终端操作,它能够将 stream 中所有元素反复结合起来,得到一个最终值。
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使用说明
- SpringBoot MongoDB详细使用教程 2023-06-24
- 深入理解java虚拟机之自动内存管理机制(二) 2023-09-01
- maven多模块依赖版本不一致问题解决 2023-07-14
- 基于SpringBoot多线程@Async的使用体验 2023-08-11
- Spring深入分析讲解BeanUtils的实现 2023-01-23
- JSP 自定义注解及记录操作日志 2023-07-31
- Java作为与MySQL交互的cron脚本与使用PHP 2023-11-01
- 深入了解Spring的事务传播机制 2023-06-02
- Java实现软件运行时启动信息窗口的方法 2024-01-28
- Java多线程并发FutureTask使用详解 2023-02-05