这篇文章将为大家详细讲解有关如何在java8中使用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);
}
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;
});
关于如何在java8中使用reduce()求和就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。