首页 > 其他分享 >使用Stream流分组求和案例

使用Stream流分组求和案例

时间:2024-04-09 15:03:30浏览次数:17  
标签:Map stream Stream 求和 List collect 对象 分组 User

需求: 现有一个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对象并赋值。

标签:Map,stream,Stream,求和,List,collect,对象,分组,User
From: https://www.cnblogs.com/ProsperousEnding/p/18123981

相关文章

  • java stream流 获取最后一条数据
    JavaStream流获取最后一条数据在Java中,Stream是一种用于处理集合数据的抽象概念。Stream提供了一种函数式编程的方式来操作数据,可以通过一系列的操作来处理集合中的元素。本文将介绍如何使用JavaStream流获取最后一条数据。什么是JavaStream流JavaStream是Java8中引入的一......
  • C# List 根据传入的分组字段,动态分组
     动态分组:publicstaticclassDynamicLinqExtensions{///<summary>///分组查询///</summary>///<typeparamname="T"></typeparam>///<paramname="source">数据源</param>///<p......
  • 【C语言】练习:分数求和
    计算1/1-1/2+1/3-1/4+1/5……+1/99-1/100的值,打印出结果首先看题,分子不变为1,分母1-100;既然是分数计算,那结果肯定存在小数,所以在开始定义一个double类型的变量“num”;初始化一个int类型的变量“i”,使用for循环产出1-100的值;在for循环里使用if语句来判断分母是偶数......
  • vue快速入门(十四)reduce求和
    注释很详细,直接上代码新增内容非嵌套情况求和嵌套情况求和源码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><ti......
  • PostgreSQL 将分组后的字段合并成一个 JSON 对象
    在PostgreSQL数据库中,有时需要将分组后的字段合并成一个JSON对象,并将其保存到一个新的字段中。本文将介绍如何使用PostgreSQL中的json_agg函数来实现这一目标。假设我们有一个销售订单表格,其中包含订单编号、产品名称和销售数量等字段。现在我们需要按照订单编号分组,并将......
  • Stream API对数组进行操作。
    importjava.util.Arrays;importjava.util.stream.Stream;/***主程序类,演示了如何使用StreamAPI对数组进行操作。*/publicclassApp{/***主方法,展示了不同方式将数组转换为Stream并进行过滤操作。**@paramargs命令行参数(未使用)*/......
  • ES查询之聚合函数、分组查询
    目录一、前言二、准备数据三、avg四、max五、min六、sum七、多个聚合和嵌套聚合七、分组查询一、前言聚合函数大家都不陌生,同数据库的聚合函数一样,elasticsearch中也没玩出新花样,所以,这一章相对简单,只需要记得下面几个用法即可:avgmaxminsum聚合的两个主要的......
  • FastReport 报表打印分组(切换订单的时候,让页码分开显示)
    注:在打印报表时,想要一次性打印很多ID(单号)的报表,当一个ID的内容很多,一页放不开的时候,会出现好几张纸是同一个ID的情况。此时,你想要的分页是根据ID分页时,以下操作可以帮你实现第一步:GroupHeader设置分组为单号,设置属性ResetPageNumber为True,StartNewPage为True (2)报表,设置里勾......
  • 通过groupby将数据分组后提取出来
    groupby真是个好东西参考:python数据分析之Dataframe分组(groupby)_dataframegroupby-CSDN博客【Python】进阶学习:pandas--groupby()用法详解_pandasgroupby函数-CSDN博客get_grouppandas中groupby取出某一组的方法_pandasgroupby分组后取出分组-CSDN博客Python在Python中......
  • E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to regist
    kaggle里面导入pytorch_lightning时发出的警告信息复现代码(其余是2024年3月下旬kaggle的默认环境):!pipinstall-Ueinops==0.7.0sacred==0.8.5pytorch_lightning==1.1.4torchtext==0.6.0pyarrow==15.0.0importpytorch_lightning结果(发出警告信息):2024-04-0812:59:19.0......