Java8 reduce操作详解
Java8
今日小编为你讲解Java8方面的讲解,具体介绍如下:
什么是reduce
Java8 中有两大最为重要的改变,其一是 Lambda 表达式,另一个就是 Stream API 了。
Stream 是 Java8 中处理集合的关键抽象概念,它将数据源流化后,可以执行非常复杂的查找、过滤和映射数据、排序、切片、聚合统计等操作。操作之后会产生一个新的流,而数据源则不会发生改变。
在使用 Stream 操作的过程中,往往有三个步骤,
1. 创建Stream
从一个数据源(集合,数组)中,新建一个 Stream 流。
2. 中间操作
一个中间操作链,对 Stream 流的数据进行处理。比如查找、过滤、映射转换等。
3. 终止操作
一个终止操作,执行中间操作链,并产生结果。常用的终止操作有forearch、collect、match、count、min、max、reduce等。
其中本文主要讲解的 reduct 操作就属于是 Stream 流操作中的终止操作。
reduce 操作是一种通用的归约操作,它可以实现从 Stream 中生成一个值,其生成的值不是随意的,而是根据指定的计算模型。
比如终止操作中提到 count、min 和 max 方法,因为常用而被纳入标准库中。事实上这些方法都是一种 reduce 操作。
本文大纲如下,

reduce 操作三要素
为了方便大家理解 reduce (规约)操作,先给大家演示一下 reduce 操作的相关代码示例,
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
int result = numbers
.stream()
.reduce(0, (subtotal, element) -> subtotal + element);
assertThat(result).isEqualTo(21);
可以看到,我们的 reduce 操作接受了三个参数,返回了一个 int 基本类型。
在 Stream API 中,提供了三个 reduct 操作方法,根据参数不同进行区分。

对应上方代码示例,也就是使用了接受两个参数的 reduce 方法,但其实接受两个参数的 reduce 方法的代码逻辑是和接受三个参数的 reduce 方法是一致的。通过上方截图可以看出。
所以这里,我就直接给大家介绍下 reduce 操作的三个参数分别有什么作用即可。
identiy 参数
identiy(初始值)是 reduce 操作的初始值,也就是当元素集合为空时的默认结果。对应上方代码示例,也就是说 reduce 操作的初始值是 0。
accumulator 参数
accumulator(累加器)是一个函数,它接受两个参数,reduce 操作的部分元素和元素集合中的下一个元素。它返回一个新的部分元素。在这个例子中,累加器是一个 lambda 表达式,它将集合中两个整数相加并返回一个整数:(a, b) -> a + b。
相关阅读
-
Nginx反向代理为什么叫做“反向”?
您可能不了解Nginx反向代理为什么叫做“反向”方面的介绍,下面为详细的介绍。 今天不念就和大家聊聊正向代理和反向代理。 正向代理(Forward Proxy) 正向代理是位于用户设备和互联网之间
-
企业公司网站如何建立 注册公司网上申请入口
今天介绍企业公司网站如何建立和注册公司网上申请入口的教程内容,接下来IT袋带大家一起了解。 公司想要建设一个网站,但是不知道具体要怎么做,需要准备什么资料,针对这个问题,I
-
初级网络工程师30道面试题及答案 网络技术运维工程师面试
今日小编为你讲解初级网络工程师30道面试题及答案的话题,一起跟随小编看看吧! 不念整理了一下初级网络工程师面试题,针对初级网络工程师,我们在面试的时候主要考察的是基础概念,
-
html简单网页代码大全 创建自己的网站平台的方法
小编为大家解答html简单网页代码大全和创建自己的网站平台的方法方面的介绍,一起来了解了解吧。 用 HTML怎么制作网页 呢?静态网站的编写主要是用HTML DIV+CSS JS等来完成页面的排版设计


