java8的stream流中reduce()方法怎么求和
这篇文章主要介绍“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()方法怎么求和”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。