700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java stream 分组求和_Java stream List 求和 分组操作

java stream 分组求和_Java stream List 求和 分组操作

时间:2022-10-10 09:49:15

相关推荐

java stream 分组求和_Java stream List 求和 分组操作

Java stream List 求和、分组操作

前言

项目中经常会使用Stream操作一些集合数据,今天记录一下我经常使用的Stream操作

求和操作publicstaticvoidmain(String[]args){

Listusers=generateUserList();intreduce=users.stream().mapToInt(x->x.getSalary().intValue()).reduce(0,Integer::sum);

log.info("Intsum-{}",reduce);

BigDecimalreduce1=users.stream().map(User::getSalary).reduce(BigDecimal.ZERO,BigDecimal::add);

log.info("BigDecimalsum-{}",reduce);

}privatestaticListgenerateUserList(){

Listusers=newArrayList<>();for(inti=0;i

users.add(newUser((long)(i+1),StrFormatter.format("用户-{}",i),RandomUtil.randomBigDecimal(newBigDecimal(1000),newBigDecimal(100000))));

}returnusers;

}复制代码

结果:16:03:32.966[main]INFOcom.springboot.example.stream.StreamTest-Intsum-31128616:03:32.977[main]INFOcom.springboot.example.stream.StreamTest-BigDecimalsum-311286复制代码

这里使用了Integer 及BigDecimal类型的求和,其他的例如Long Double类型的自行尝试,操作都是一样的。

分组操作Map>groups=users.stream().collect(Collectors.groupingBy(User::getName,Collectors.toList()));复制代码

结果16:19:24.018[main]INFOcom.springboot.example.stream.StreamTest-groups-{"用户-0":[{"name":"用户-0","id":1,"salary":44133.974869422615}],"用户-1":[{"name":"用户-1","id":2,"salary":32433.52878974182}],"用户-4":[{"name":"用户-4","id":5,"salary":26726.1799749091}],"用户-2":[{"name":"用户-2","id":3,"salary":83274.99312309967}],"用户-3":[{"name":"用户-3","id":4,"salary":1579.9248811900475}]}复制代码

自定义分组的数据结构ListgroupCustomize=users.stream().collect(Collectors.groupingBy(User::getName,Collectors.toList())).entrySet().stream().map(e->{

MapnewObj=newHashMap<>();

newObj.put("name",e.getKey());

newObj.put("items",e.getValue());returnnewObj;

}).collect(Collectors.toList());复制代码

结果16:24:23.554[main]INFOcom.springboot.example.stream.StreamTest-groupscustomize-[{"name":"用户-0","items":[{"name":"用户-0","id":1,"salary":69329.43639757435}]},{"name":"用户-1","items":[{"name":"用户-1","id":2,"salary":14632.879595342842}]},{"name":"用户-4","items":[{"name":"用户-4","id":5,"salary":52953.301688394306}]},{"name":"用户-2","items":[{"name":"用户-2","id":3,"salary":29500.813638173757}]},{"name":"用户-3","items":[{"name":"用户-3","id":4,"salary":30750.353923258994}]}]复制代码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。