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使用说明
基础教程推荐
- spring的maven配置文件整理 2023-08-01
- mybatis collection和association的区别解析 2023-03-06
- Gateway网关自定义拦截器的不可重复读取数据问题 2022-09-03
- java BigDecimal类案例详解 2023-05-08
- Spring 与 JDK 线程池的简单使用示例详解 2023-05-14
- springboot项目中jackson-序列化-处理 NULL教程 2024-03-03
- SpringBoot自动配置实现的详细步骤 2022-11-20
- MyBatis图文并茂讲解注解开发一对一查询 2023-02-19
- redis深入浅出分布式锁实现下篇 2023-05-08
- 排序算法图解之Java冒泡排序及优化 2023-07-01