使用Stream流分组求和案例
需求: 现有一个User对象,包含有用户名username,性别sex,年龄age,考试分数score。
现在需要对UserList,相同用户名和性别和年龄的人将他们的学科分数相加,算出总分
思路:
- 先将userList转换为Map,key为User对象
Map<String, List<User>> collect = userList.stream()
.collect(Collectors.groupingBy(o -> {
User user = new User().setUserName(o.getUserName()).setSex(o.getSex()).setAge(o.getAge());
return JSON.toJSONString(user);
}));
- 将Map转为List
List<User>= collect.entrySet()
.stream()
.map(m -> {
User mat = JSON.parseObject(m.getKey(), User.class);
long scoreSum = m.getValue()
.stream()
.count();
return mat.setScoreSum(scoreSum);
}).collect(Collectors.toList());
总结:
将需要groupby的字段重新赋值给一个新对象,然后将这个对象序列化后作为key,value为原来的List,然后将该map进行计算后转回List对象并赋值。
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器