使用Stream流分组求和案例

需求: 现有一个User对象,包含有用户名username,性别sex,年龄age,考试分数score。
现在需要对UserList,相同用户名和性别和年龄的人将他们的学科分数相加,算出总分

思路:

  1. 先将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);  
        }));
  1. 将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对象并赋值。

posted @   ProsperousEnding  阅读(163)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
  1. 1 原来你也在这里 周笔畅
  2. 2 世间美好与你环环相扣 柏松
  3. 3 起风了 吴青峰
  4. 4 极恶都市 夏日入侵企划
  5. 5 所念皆星河 CMJ
  6. 6 所念皆星河-歌词版 房东的猫
  7. 7 卡农-钢琴版 dylanf
  8. 8 The truth that you leave Pianoboy高至豪
  9. 9 虹之间 米叔啊
所念皆星河-歌词版 - 房东的猫
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 镜千

作曲 : CMJ

编曲 : 关天天

制作人 : 关天天

你眨了下眼睛

像夜空 闪烁的恒星

为我所有不安

找到了 指引

我呢喃了一句

晚风里 出走的心绪

为你每次试探

捎去了 回应

所念皆星河 辗转里反侧

你占领每个 永恒的片刻

无垠的宇宙 浩瀚的选择

你是最亮那颗

所爱如月色 触手而不得

将温柔的梦 都投射

你眼里有我 对这世间的

吝啬

你返航的轨迹

是所有 等待的意义

绕过多少周期

从未曾 离心

多遥远的距离

都不抵 内心的亲密

周旋每段关系

认出你 身影

所念皆星河 辗转里反侧

你占领每个 永恒的片刻

无垠的宇宙 浩瀚的选择

你是最亮那颗

所爱如月色 触手而不得

将温柔的梦 都投射

你眼里有我 对这世间的

吝啬

所念皆星河 辗转里反侧

你占领每个 永恒的片刻

无垠的宇宙 浩瀚的选择

你是最亮那颗

所爱如月色 触手而不得

将温柔的梦 都投射

你眼里有我 对这世间的

吝啬

茫茫的星河 终点是你的

身侧

总策划 : 唐晶晶、凌联兴

监制 : 姚政、纤橙

统筹 : 陈莹、小粉

企划 : 潘俊、黄鲲、袁晓童

文案 : 黄果璇、镜千

封面 : 高霄帆

吉他 : 关天天

混音 : 刘城函

和声 : 少年佩

伴唱 : 沙栩帆

弦乐 : 国际首席爱乐乐团

制作统筹 : OneCandy

点击右上角即可分享
微信分享提示