java8 stream reduce()方法使用_java8 reduce_夏客柯的博客-程序员宅基地

技术标签: java  stream  

reduce()这个方法可能平时用得不多,因为它的常用方法都被单独封装起来了。比如sum()max()min()count()都是通过reduce()操作的。

reduce()是下面三个方法

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)

主要功能 是单参数方法的 ,下面两个一个增加初始值identity,一个是增加并行处理时,多段值的操作。

下面 看例子:

//找出最大数
        Optional<Integer> student = Stream.of(1, 2, 3, 4, 5, 6).reduce((v1, v2) -> v1 > v2 ? v1 : v2);
        System.out.println(student.get());

上面输出结果:

6

两个参数的测试:

//设置一个默认值,从默认值开始处理
        Integer result = Stream.of(1, 2, 3, 4, 5, 6).reduce(0, (v1, v2) -> v1 + v2);
        System.out.println(result);

输出结果: 

21

下面看三个参数例子:

Integer studentId = Stream.of(1, 2, 3, 4, 5, 6).reduce(0,
                (sum, v) -> {
                    return sum + v;
                },
                (s1, s2) -> s1 + s2);

输出结果:

21

如果在不使用并行处理的时候,三个参数跟两个参数的方法功能一模一样,而且后面s1跟s2的处理不起到 任何作用的,当加上并行处理 后,结果可以处理多个并行处理的结果再次 处理 ,下面再来个例子 :

Integer studentId = Stream.of(1, 2, 3, 4, 5, 6).parallel().reduce(0,
                (sum, v) -> {
                    return sum + v;
                },
                (s1, s2) -> s1 * s2);
        System.out.println(studentId);

     处理结果:

720

将 多个并行 处理结果相乘

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/caicai250/article/details/123551246

智能推荐

python局部变量获取_Python 基础之返回值与函数使用与局部变量和全局变量locals() 和 globals()...-程序员宅基地

一.函数的返回值returnreturn:自定义返回值,返回到哪里?返回到函数的[调用处]1.return后面可以跟上六个标准数据类型,除此之外,可以跟上 类对象,函数,如果不写return,默认返回None2.return如果执行了return,意味着,return后面的所有代码,通通不执行,函数终止了#(1)return后面的数据类型#例:def func():#return 1..._找出程序中的局部变量

[转载]用四个字节十六进制数表示单精度浮点数-程序员宅基地

原文地址:用四个字节十六进制数表示单精度浮点数作者:无名指即是所谓的IEEE754标准,这也是大多数硬件存储浮点数的标准。单精度浮点数占4个字节,表示范围为:在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38 。 在C#中的转换函数为:1,由四个字节的十六机制数组转浮点数: ...

在NUC972上移植pjsip库并使用PJSUA测试VOIP电话(二)-程序员宅基地

昨天我已经把pjsip工程相关的库移植好,今天开始使用库里面自带的测试程序进行测试,在这之前需要搭建一个测试环境,我使用的是minsipserver服务器的window版本,在win10上搭建一个服务器。先简单的说一下搭建流程吧:1、安装后进入主界面,如下图所示:2、进入系统配置,配置服务器相关信息,如下图所示:只需要配置一下IP地址,端口号都是默认的,不需要改变,这样服务器相..._在nuc972上移植pjsip库并使用pjsua测试voip电话

java 模拟鼠标移动_java工作复习——鼠标事件——action类——模拟鼠标从一个位置移动到另外一个位置...-程序员宅基地

packagerjcs;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.List;importorg.apache.commons.io.FileUtils;importorg.openqa.selenium.TakesScreenshot;importorg.openqa.selenium.fir..._java的actions怎么模拟轨迹点击

浅析STM32的hex文件-程序员宅基地

前段时间需要用到BIN文件 随便把HEX文件也了解了一下 参考查阅了一些网上资料,如有雷同除了巧合还有借鉴参考。。。正题:HEX文件格式如下<0x3a>[数据长度1Byte][数据地址2Byte][数据类型1Byte][数据nByte][校验1Byte]<0x0d><0x0a>分析下面具体例子:020000040800F2: 这个就是<0x...

NOIP2011年普及组初赛题目及答案分析_noip2011普及组初赛答案-程序员宅基地

原文链接https://www.longkui.site/a-exam/noip/noip2011pans/_noip2011普及组初赛答案

随便推点

压缩感知入门(1)_磁共振图像重建中压缩感知的代码实现-程序员宅基地

科学松鼠会压缩感知科普文章两篇:“压缩感知与单像素相机(陶哲轩)”“填补空白:用数学方法将低分辨率图像变成高分辨率图像(Jordan Ellenberg)"1、压缩感知与单像素相机(陶哲轩,Terence Tao)原文链接:http://songshuhui.net/archives/11006观后感:压缩感知的提出是有意改变传统的信息采集中需要基于奈奎斯特原则的采_磁共振图像重建中压缩感知的代码实现

Virtualbox Kali Linux 安装增强包_在vmware里安装的kali linux还用安装客户端功能增强包吗-程序员宅基地

Virtual Box 安装增强包为什么要装增强包安装增强包的几点注意事项Linux 内安装增强包的顺序为什么要装增强包只有装了增强包,分辨率才能自适应,否则就一个小窗口,憋屈的很,这是主要原因之一另外还可以使用U盘等,文件共享等,总之你必要装…安装增强包的几点注意事项增强包需要与虚拟机的版本匹配,否则无法使用Windows 系统下直接双击增强包安装后,在安装的 Linux 虚拟机内同样需要安装增强包》》》》》点击此处获取Virtualbox 以及匹配增强包下载Linux 内安装增强包的顺序_在vmware里安装的kali linux还用安装客户端功能增强包吗

android字符串对齐,使用SpannableString调整文本对齐方式-程序员宅基地

所以我find了这个问题的答案,在这里贴出来帮助下一个人。我创建了一个辅助类来包含调整Span的方法,你可以使用这种语法调用它(这是设置最后2个字符在行上显示得更高):SpannableString contentAmount = new SpannableString(amount); contentAmount.setSpan(new SuperscriptSpanAdjuster(3.0/5..._android span 字体无法对齐

javafx tableview默认选择第一行_javafx tableview 默认选择行-程序员宅基地

table.getSelectionModel().select(0);_javafx tableview 默认选择行

TCP/IP 简单知识点_sooguo的博客-程序员宅基地

一. TCP和UCP的区别TCP是一个面向连接的、可靠的、基于字节流的传输层协议。而UDP是一个面向无连接的传输层协议。二. TCP三次握手从最开始双方都处于CLOSED状态。然后服务端开始监听某个端口,进入了LISTEN状态。然后客户端主动发起连接,发送 SYN , 自己变成了SYN-SENT状态。服务端接收到,返回SYN和ACK(对应客户端发来的SYN),自己变成了SYN-REVD。之后客户端再发送ACK给服务端,自己变成了ESTABLISHED状态;服务端收到ACK之后,也变成了ESTABLIS