java8新特性之stream流中reduce()求和知识总结

 更新时间:2021年05月24日 17:22:02   作者:@时间旅行者@  
今天带大家回顾Java8的新特性,文中对stream流中reduce()求和的相关知识作了详细的介绍,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下

1.stream().reduce()单字段求和

(1)普通数字求和

 public static void test2(){
        List<Integer> list= Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8,9});
        Integer sum=list.stream().reduce((x,y)->x+y).get();
        System.out.println(sum);
    }

在这里插入图片描述

2.BigDecimal求和

 public static void main(String[] args) {

        List<User> list=new ArrayList<>();

        User user1=new User();
        user1.setNum1(new BigDecimal(123));
        user1.setNum2(new BigDecimal(100));
        list.add(user1);

        User user2=new User();
        user2.setNum1(new BigDecimal(100));
        user2.setNum2(new BigDecimal(100));
        list.add(user2);
        BigDecimal sum=list.stream().map(User::getNum1).reduce(BigDecimal::add).get();
        System.out.println(sum);
    }

结果:

在这里插入图片描述

但是如果列表是中没有数据list.size()==0的时候会报错,所以需要将代码修改成如下:

BigDecimal sum=list.stream()
						.map(User::getNum1)  //返回num1的列表
						.reduce(BigDecimal.ZERO,BigDecimal::add);  //列表字段求和

当list中没有元素的时候就默认返回0;

2.stream().reduce()多字段求和

public static void main(String[] args) {

        List<User> list=new ArrayList<>();

        User user1=new User();
        user1.setNum1(new BigDecimal(123));
        user1.setNum2(new BigDecimal(100));
        list.add(user1);

        User user2=new User();
        user2.setNum1(new BigDecimal(100));
        user2.setNum2(new BigDecimal(100));
        list.add(user2);

        User u=list.stream().reduce((x,y)->{
            User user=new User();
            user.setNum1(x.getNum1().add(y.getNum1()));
            user.setNum2(x.getNum2().add(y.getNum2()));
            return user;
        }).get();
        System.out.println(u.getNum1()+"------------"+u.getNum2());
    }

结果:

在这里插入图片描述

同样,如果list中没有元素,则使用如下方式:

   User u=list.stream().reduce(new User(),(x,y)->{
            User user=new User();
            user.setNum1(x.getNum1().add(y.getNum1()));
            user.setNum2(x.getNum2().add(y.getNum2()));
            return user;
        });

默认给一个User对象,就不会报错。

总结

有三个参数类型,本文只说了前两个
1.一个参数:Optional reduce(BinaryOperator accumulator),传入求和函数式,
2.两个参数:T reduce(T identity, BinaryOperator accumulator),(默认值,求和函数式)
3.三个参数的没怎么用过,暂不说明

到此这篇关于java8新特性之stream流中reduce()求和知识总结的文章就介绍到这了,更多相关java reduce()求和内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring解决循环依赖的方法(三级缓存)

    Spring解决循环依赖的方法(三级缓存)

    今天,我们要说的是spring是如何解决循环依赖的。对于一个问题说解决之前,我们首先要先明确形成问题的本因。那么循环依赖,何为循环依赖呢?感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • Spring请求如何传递 JSON 数据

    Spring请求如何传递 JSON 数据

    JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,下面通过本文给大家介绍Spring请求如何传递JSON数据,感兴趣的朋友一起看看吧
    2025-07-07
  • redis分布式锁RedissonLock的实现细节解析

    redis分布式锁RedissonLock的实现细节解析

    这篇文章主要介绍了redis分布式锁RedissonLock的实现细节解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Spring BeanPostProcessor源码示例解析

    Spring BeanPostProcessor源码示例解析

    这篇文章主要为大家介绍了Spring BeanPostProcessor源码示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Windows10安装IDEA 2020.1.2的方法步骤

    Windows10安装IDEA 2020.1.2的方法步骤

    这篇文章主要介绍了Windows10安装IDEA 2020.1.2的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Springboot文件上传功能简单测试

    Springboot文件上传功能简单测试

    这篇文章主要介绍了Springboot文件上传功能简单测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • tomcat部署java web项目遇到的问题及解决方法

    tomcat部署java web项目遇到的问题及解决方法

    这篇文章主要介绍了tomcat部署java web项目遇到的问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 使用gRPC微服务的内部通信优化

    使用gRPC微服务的内部通信优化

    这篇文章主要为大家介绍了微服务优化之使用gRPC做微服务的内部通信,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • springboot swagger 接口文档分组展示功能实现

    springboot swagger 接口文档分组展示功能实现

    这篇文章主要介绍了springboot swagger 接口文档分组展示功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • spring 整合mybatis后用不上session缓存的原因分析

    spring 整合mybatis后用不上session缓存的原因分析

    因为一直用spring整合了mybatis,所以很少用到mybatis的session缓存。什么原因呢?下面小编给大家介绍spring 整合mybatis后用不上session缓存的原因分析,需要的朋友可以参考下
    2017-02-02

最新评论