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

网友投稿 261 2023-01-13

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();

vbFiOPs 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.三个参数的没怎么用过,暂不说明

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序 免费api(小程序 免费配送 我的订单 搜索)
下一篇:沧州快递物流查询单号(沧州市顺丰快递网点查询)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~