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

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

(1)普通数字求和

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

(2)BigDecimal求和

publicstaticvoidmain(String[]args){List<User>list=newArrayList<>();Useruser1=newUser();user1.setNum1(newBigDecimal(123));user1.setNum2(newBigDecimal(100));list.add(user1);Useruser2=newUser();user2.setNum1(newBigDecimal(100));user2.setNum2(newBigDecimal(100));list.add(user2);BigDecimalsum=list.stream().map(User::getNum1).reduce(BigDecimal::add).get();System.out.println(sum);}

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

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

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

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

publicstaticvoidmain(String[]args){List<User>list=newArrayList<>();Useruser1=newUser();user1.setNum1(newBigDecimal(123));user1.setNum2(newBigDecimal(100));list.add(user1);Useruser2=newUser();user2.setNum1(newBigDecimal(100));user2.setNum2(newBigDecimal(100));list.add(user2);Useru=list.stream().reduce((x,y)->{Useruser=newUser();user.setNum1(x.getNum1().add(y.getNum1()));user.setNum2(x.getNum2().add(y.getNum2()));returnuser;}).get();System.out.println(u.getNum1()+"------------"+u.getNum2());}

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

Useru=list.stream().reduce(newUser(),(x,y)->{Useruser=newUser();user.setNum1(x.getNum1().add(y.getNum1()));user.setNum2(x.getNum2().add(y.getNum2()));returnuser;});

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

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