千家信息网

java8的stream流中reduce()方法怎么求和

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍"java8的stream流中reduce()方法怎么求和"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"java8的stream流中reduc
千家信息网最后更新 2025年02月01日java8的stream流中reduce()方法怎么求和

这篇文章主要介绍"java8的stream流中reduce()方法怎么求和"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"java8的stream流中reduce()方法怎么求和"文章能帮助大家解决问题。

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

(1)普通数字求和

 public static void test2(){        List 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 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 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对象,就不会报错。

关于"java8的stream流中reduce()方法怎么求和"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

0