使用java stream对集合中的对象按指定字段进行分组并统计

一、概述

有这样一个需求,在一个list集合中的对象有相同的name,我需要把相同name的对象进行汇总计算。使用java stream来实现这个需求,这里做一个记录,希望对有需求的同学提供帮助

 一、根据指定字段进行分组

一、先准备好给前端要封装返回的实体类

package com.tingyi.pojo;import lombok.*;@Data
@AllArgsConstructor
@NoArgsConstructor
public class ColthTypeVo {//所指定的字段private String name;//统计的数量private Integer total;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getTotal() {return total;}public void setTotal(Integer total) {this.total = total;}
}

 二、准备好要筛选的数据,我这边是调取的第三方系统做的集成,各位小伙伴一般都是查询数据库

JSONObject jsonObject = JSON.parseObject(sync);JSONObject data = jsonObject.getJSONObject("data");List<ColthType> records = data.getList("records", ColthType.class);

三、进行筛选分组并统计 

List<ColthTypeVo> collect = records.stream()//这边建议将这个字段过滤一下  不能为空.filter(l->!StringUtils.isEmpty(l.getCarTypeName()))//如果为空的话  这里分组会报错 key is null.collect(Collectors.groupingBy(ColthType::getCarTypeName)).entrySet().stream().map(c -> {String key = c.getKey();List<ColthType> value = c.getValue();Integer size = value.size();ColthTypeVo colthTypeVo = new ColthTypeVo();colthTypeVo.setName(key);colthTypeVo.setTotal(size);return colthTypeVo;//小伙伴要注意  这里不可以直接 new ColthTypeVo().setName(key);  可能会因为返回值为void爆红  void不支持链式调用}).collect(Collectors.toList());

四、最终结果 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三菱plc gxwork3 0X121201F 报错;三菱标签区域的保留容量不足;

如果占用过多把r文件寄存器的地址范围改小&#xff0c;一般文件寄存器的地址r0-8000足够了

zk集群搭建

zk集群在搭建部署的时候&#xff0c;通常选择2n1奇数台。底层 Paxos 算法支持&#xff08;过半成功&#xff09;。 zk部署之前&#xff0c;保证服务器基础环境正常、JDK成功安装。 服务器基础环境 IP主机名hosts映射防火墙关闭时间同步ssh免密登录 JDK环境 1、虚拟机克隆 …

Elasticsearch 复合聚合:bucket_by_keys、date_histogram 等

在Elasticsearch中&#xff0c;聚合&#xff08;Aggregation&#xff09;是一种强大的功能&#xff0c;允许我们对数据进行复杂的分析和总结。其中&#xff0c;复合聚合&#xff08;Composite Aggregations&#xff09;是一种特别灵活的聚合方式&#xff0c;它可以将多个聚合类…

014-GeoGebra基础篇-快速解决滑动条的角度无法输入问题

有客户反馈&#xff0c;他的Geogebra一直有个bug&#xff0c;那就是输入角度最大值时总不按照他设定的展示&#xff0c;快被气炸了~ 目录 一、问题复现&#xff08;1&#xff09;插入一个滑动条&#xff08;2&#xff09;选择Angle&#xff08;3&#xff09;输入90&#xff0c;…

【SQL Server高可用性全解】构建永不宕机的数据库解决方案

标题&#xff1a;【SQL Server高可用性全解】构建永不宕机的数据库解决方案 SQL Server作为微软推出的关系型数据库管理系统&#xff0c;广泛应用于企业级应用中。在这些应用中&#xff0c;数据库的高可用性是至关重要的&#xff0c;它确保了数据的持久化存储和连续访问。本文…

华为OD机试c卷(100分)-数组连续和

题目描述 给定一个含有N个正整数的数组, 求出有多少个连续区间&#xff08;包括单个正整数&#xff09;, 它们的和大于等于x。 输入描述 第一行两个整数N x&#xff08;0 < N < 100000, 0 < x < 10000000) 第二行有N个正整数&#xff08;每个正整数小于等于100)…

复现centernet时,报错RuntimeError: CUDA error: out of memory

运行 python test.py ctdet --dataset coco --exp_id coco_dla --load_model /root/CenterNet/exp/ctdet/coco_dla/model_last.pth --gpus 0 --test_scales 1 报错下面&#xff1a; RuntimeError: CUDA error: out of memory明明显存是够用的 解决办法&#xff1a; 找到自己…

代码随想录——无重叠区间(Leetcode435)

题目链接 贪心 排序 class Solution {public int eraseOverlapIntervals(int[][] intervals) {int res 0;if(intervals.length 1 || intervals.length 0){return res;}// 按左边界排序Arrays.sort(intervals, new Comparator<int[]>() {public int compare(int[] …

Protobuf(三):理论学习,简单总结

1. Protocol Buffers概述 Protocol Buffers&#xff08;简称protobuf&#xff09;&#xff0c;是谷歌用于序列化结构化数据的一种语言独立、平台独立且可扩展的机制&#xff0c;类似XML&#xff0c;但比XML更小、更快、更简单protobuf的工作流程如图所示 1.1 protobuf的优点…

【第17章】MyBatis-Plus自动维护DDL

文章目录 前言一、功能概述二、注意事项三、代码示例四、实战1. 准备2. ddl配置类3. 程序启动4. 效果(数据库) 总结 前言 在MyBatis-Plus的3.5.3版本中&#xff0c;引入了一项强大的功能&#xff1a;数据库DDL&#xff08;数据定义语言&#xff09;表结构的自动维护。这一功能…

app一键退出功能---笔记

问题本质包含两个部分 1.一键结束当前所有的activity 2.一建结束当前的app进程 方式一,采用Activity的启动模式 SingleTask 将app入口的activity设置成singleTask模式,在xml中进行配置。 在activity中重写 onNewIntent(). 优点:使用方便简单, 缺点:1.规定了app入口a…

vite+vue3+nginx配置统一公共前缀

方案1&#xff1a;重定向 server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html;}location /music/ {proxy_pass http://127.0.0.1:80/;} }方案2&#xff1a;vitenginx双重配置 在方案1中&#xff0c;我们虽然能够实现 通过 …

告别高查重率,AI降重工具帮你快速过关

高查重率是许多毕业生的困扰。通常&#xff0c;高查重率源于过度引用未经修改的参考资料和格式错误。传统的降重方法&#xff0c;如修改文本和增添原创内容&#xff0c;虽必要但耗时且成效不一。 鉴于此&#xff0c;应用AI工具进行AIGC降重成为了一个高效的解决方案。这些工具…

Cloudflare 推出一款免费对抗 AI 机器人的可防止抓取数据工具

上市云服务提供商Cloudflare推出了一种新的免费工具&#xff0c;可防止机器人抓取其平台上托管的网站以获取数据以训练AI模型。 一些人工智能供应商&#xff0c;包括谷歌、OpenAI 和苹果&#xff0c;允许网站所有者通过修改他们网站的robots.txt来阻止他们用于数据抓取和模型训…

Hutool构建树结构

引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version> </dependency>测试 SpringBootTest public class HutoolTest {private List<Menu> me…

Word “当前页“ 与 “前一页“ (含部分内容)间有大半页空白,删除空白方法

鼠标光标选中需要向上移的句子&#xff0c;右键点击“段落”&#xff0c;然后在跳出的窗口中按照“换行和分页”中的红色方框内取消勾选后&#xff0c;点击确定即可。

预定义函数和自定义函数

预定义函数 理解&#xff1a;MySQL提供的函数&#xff0c;直接调用即可 注意1&#xff1a;函数使用select调用 注意2&#xff1a;函数必须有返回值 数学类函数 SELECT ABS(-100);# 获取绝对值 SELECT SQRT(9);# 获取平方根 SELECT MOD(10,3);# 获取余数 SELECT POW(3,3);#…

@化工人|人员定位系统如何选择?从了解定位技术开始

提及化工安全管理所面临的主要难题&#xff0c;大家往往会想到”人难管、事难办、责难负“这三难&#xff0c;而每一难都离不开”人“这个主体。因此&#xff0c;在企业日渐实现数字化转型的今天&#xff0c;越来越多的化工企业选择建设以人员定位系统为核心的企业安全生产信息…

实时数仓Hologres OLAP场景核心能力介绍

作者&#xff1a;赵红梅 Hologres PD OLAP典型应用场景与痛点 首先介绍典型的OLAP场景以及在这些场景上的核心痛点&#xff0c;OLAP典型应用场景很多&#xff0c;总结有四类&#xff1a;第一类是BI报表分析类&#xff0c;例如BI报表&#xff0c;实时大屏&#xff0c;数据中台等…