java8 stream reduce()方法使用_java stream 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

智能推荐

Git Bash 默认界面配色分析_windows平台 gitbash 配色-程序员宅基地

文章浏览阅读1.3k次。介绍 Git Bash 的默认界面配色._windows平台 gitbash 配色

Cocos2d-x内存管理机制_cocos2dx 删除节点析构函数-程序员宅基地

文章浏览阅读249次。在C++中,动态内存分配是一把双刃剑,一方面,直接访问内存地址提高了应用程序的性能,与使用内存的灵活性;另一方面,由于程序没有正确地分配与释放造成的例如野指针,重复释放,内存泄漏等问题又严重影响着应用程序的稳定性。人们尝试着不同的方案去避免这个问题,比较常用的如智能指针,自动垃圾回收等,这些要么影响了应用程序的性能,要么仍然需要依赖于开发者注意一些规则,要么给开发者带来了另外一些很丑陋的用法(实际上笔者很不喜欢智能指针)。因此,优秀的C++内存管理方案需要兼顾性能,易用性,所以到目前为止C++标准都没有_cocos2dx 删除节点析构函数

详解SpringMVC使用MultipartFile实现文件的上传_py multipartfile上传文件 springmvc接-程序员宅基地

文章浏览阅读8.7k次,点赞2次,收藏6次。本篇文章主要介绍了SpringMVC使用MultipartFile实现文件的上传,本地的文件上传到资源服务器上,比较好的办法就是通过ftp上传。这里是结合SpringMVC+ftp的形式上传的,有兴趣的可以了解一下。如果需要实现跨服务器上传文件,就是将我们本地的文件上传到资源服务器上,比较好的办法就是通过ftp上传。这里是结合SpringMVC+ftp的形式上传的。我们需要先懂得如何配_py multipartfile上传文件 springmvc接

IDEA 是什么 以及怎么安装_ideaie-程序员宅基地

文章浏览阅读501次,点赞2次,收藏2次。IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Ja.._ideaie

Matlab画图让坐标轴单位长度相同_matlab坐标轴长度相同-程序员宅基地

文章浏览阅读2.7w次,点赞14次,收藏26次。让坐标轴单位长度相同今天画开封铁塔的模拟图,代码如下:clcclearclose allload A_1986c1 = 1:8:104; c2 = 8:8:104; C = [c1;c2]';x = A_1986(:,1);y = A_1986(:,2);z = A_1986(:,3);x_center = center_86(:,1);y_center = center_86(:..._matlab坐标轴长度相同

Python随笔:函数(经典案例18例)_python函数经典例程-程序员宅基地

文章浏览阅读6.8k次,点赞21次,收藏70次。1.斐波那契##编写斐波那契数列的函数并调用def fib(n):##n是形参 a,b =1,1 while a<n: print(a,end=' ') a,b=b,a+b print(a,b)fib(1000)_python函数经典例程

随便推点

Android 插件化开发——对startActivity方法进行hook(一)_hook startactivity-程序员宅基地

文章浏览阅读649次。本篇博客主要讲述一下对startActivity进行hook,对于Android开发来说,跳转一个新的Activity页面,最常见的无非两种了,方法一:Intent intent = new Intent(MainActivity.this, NewActivity.class);startActivity(intent);方法二:Intent intent = new Intent(..._hook startactivity

在服务器上如何打开mdf文件,在没sql server数据库状况下怎么打开.mdf文件-程序员宅基地

文章浏览阅读554次。1.新建一个同名的数据库(数据文件与原来的要一致)2.再停掉sql server(注意不要分离数据库)3.用原数据库的数据文件覆盖掉这个新建的数据库4.再重启sql server5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行..._没安装sqlserver navicat premium 16 怎么打开.mdf文件

java程序员学技术都会访问那些网站?_chungwe java-程序员宅基地

文章浏览阅读101次。java程序员学技术的网站哔哩哔哩https://www.bilibili.com/ CSDNhttps://www.csdn.net/nav/java 掘金https://juejin.cn/ 简书https://www.jianshu.com/ 博客园https://www.cnblogs.com/ 慕课网https://www.imooc.com/ GooGleVip8http://googlevip8.com githubhttp://github.com/ 码云..._chungwe java

Linux 获取本机网卡IP和Mac地址_linux获取本机mac地址函数-程序员宅基地

文章浏览阅读713次。Linux 获取本机网卡IP和Mac地址_linux获取本机mac地址函数

【Java 8系列】Stream详解,看这一篇就够啦_java8 stream-程序员宅基地

文章浏览阅读5.3w次,点赞194次,收藏743次。热门系列: 【Java 8系列】Java开发者的判空利器 -- Optional 【Java 8系列】Lambda 表达式,一看就废 程序人生,精彩抢先看 1.前言2.正文3.总结..._java8 stream

Redis工具列表_redis-cerberus-程序员宅基地

文章浏览阅读1.4k次。Redis tool listHere is a Redis tool list. I hope you will find one or two of them that you’d like to try out.Table of ContentsRedis ClusterRedis VarietyRedis ProxyRedis ModuleRedis ClientRedi..._redis-cerberus

推荐文章

热门文章

相关标签