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

news2024/11/25 22:54:40

一、概述

有这样一个需求,在一个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.coloradmin.cn/o/1892839.html

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

相关文章

PDF内存如何变小,PDF内存压缩,PDF内存变小怎么调整

在数字化时代&#xff0c;pdf已成为工作、学习和生活中不可或缺的文件格式。它以其跨平台兼容性和安全性受到广大用户的喜爱。然而&#xff0c;随着pdf文件中嵌入的图片、图形和文本内容的增多&#xff0c;文件大小往往会变得相当可观&#xff0c;给文件的传输和存储带来一定的…

vue3渲染函数加入自定义指令(图文教程)

嗯&#xff0c;公众号“程序员野区”收到提问》 问了自己几个群里小伙伴&#xff0c;总算搞定了。 序&#xff1a; withDirectives是vue3.2.0版本上线的&#xff0c;所以你版本不要低&#xff0c;低了不行官方的demo在这里&#xff0c;懂的&#xff0c;直接看官方的就可以》h…

微信小程序禁止PC端打开防止白嫖广告或抓接口

前言 晓杰每日靠着微薄的小程序广告度日&#xff0c;继之前检测手机端微信跳过小程序广告插件检测后又发现小程序广告在电脑端经常没广告&#xff0c;导致收入备降&#xff01;虽然每天只有几块钱的收入&#xff0c;哈哈哈&#xff01;那么怎么做到禁止小程序使用电脑端微信打…

有没有好用的开源mes系统?

根据我多年的从业经验来看&#xff0c;我知道有很多工厂都想找一款好用的开源mes系统。简单来说&#xff0c;开源mes系统通过公开源代码&#xff0c;鼓励企业和用户共同参与系统的改进和定制&#xff0c;根据自己的需求进行二次开发&#xff0c;使得企业在有限的预算内也能获得…

《ClipCap》阅读笔记(上)

原文出处 [2111.09734] ClipCap: CLIP Prefix for Image Captioning (arxiv.org) 原文笔记 What ClipCap&#xff1a; CLIP Prefix for Image Captioning 一言以蔽之&#xff1a;使用 CLIP 编码作为标题的前缀&#xff0c;使用简单的映射网络&#xff0c;然后微调语言模型…

[el-form] 表单验证:一次验证两个值,传参

一次验证两个值 要在表单的el-form-item 一次验证两个值&#xff0c;都不能为空 在验证规则rules里&#xff0c;要验证的值里加上validator验证规则&#xff0c;“valTowValue”是自己定义的。 传参 const validateField (key, errorMessage) > (rule, value, callback) &g…

virtualbox(7.0) ubuntu(22) 和win11共享文件夹

在虚拟机中安装增强功能。在virtualbox中配置 执行命令将用户加入vboxsf组 sudo adduser your_usrname vboxsf 重启ubuntu即可

语音识别FBank特征提取学习笔记

语音识别就是把一段语音信号转换成对应的文本信息&#xff0c;这一过程包括四个大的模块&#xff0c;分别是&#xff1a;特征提取、声学模型、语言模型、字典与解码。 本篇就来梳理一下特征提取模块的实现思路和方法。 常用的语音特征有&#xff1a; 梅尔频率倒谱系数&#x…

windows电脑如何运行python的定时任务

这里需要使用&#xff1a;windows系统设置-控制面板里的计划任务 1.打开计划任务之后&#xff0c;选择&#xff1a;创建基本任务 2.填写名称&#xff0c;这里根据自己具体的项目需求填写&#xff0c;然后点击下一步。 3.选择每日&#xff0c;再点击下一步 4.设置时间&…

告别写作难题,这些AI写作工具让你文思泉涌

在现实生活中&#xff0c;除了专业的文字工作者&#xff0c;各行各业都避免不了需要写一些东西&#xff0c;比如策划案、论文、公文、讲话稿、总结计划……等等。而随着科技的进步&#xff0c;数字化时代的深入发展&#xff0c;AI已经成为日常工作中必不可少的工具了&#xff0…

全新升级!中央集中式架构功能测试为新车型保驾护航

“软件定义汽车”新时代下&#xff0c;整车电气电气架构向中央-区域集中式发展已成为行业共识&#xff0c;车型架构的变革带来更复杂的整车功能定义、更多的新技术的应用&#xff08;如SOA服务化、智能配电等&#xff09;和更短的车型研发周期&#xff0c;对整车和新产品研发的…

基于合成 VIIRS(NTL)夜间光照数据-印度

GAN based Synthetic VIIRS (NTL) India 基于合成 VIIRS&#xff08;NTL&#xff09;的广域网 印度 简介 本研究利用了两个主要来源的夜间光照&#xff08;NTL&#xff09;数据&#xff1a;国防气象卫星计划&#xff08;DMSP&#xff09;和苏美国家极地伙伴关系&#xff08;…

使用 Nginx + GeoIP2 获取客户端地理位置及限制指定地区访问

要实现防火墙只允许单个城市的访问&#xff0c;您可以采取以下几种方法&#xff1a; 1、IP地理位置过滤&#xff1a; 使用GeoIP数据库&#xff08;如MaxMind的GeoIP2&#xff09;来确定IP地址的地理位置。 配置防火墙规则&#xff0c;只允许来自特定城市的IP地址访问。 2、内容…

SpringCloud-服务网关-Gateway

1.服务网关在微服务中的应用 (1)对外提供服务的难题分析&#xff1a; 微服务架构下的应用系统体系很庞大&#xff0c;光是需要独立部署的基础组件就有注册中心、配置中心和服务总线、Turbine异常聚合和监控大盘、调用链追踪器和链路聚合&#xff0c;还有Kaka和MQ之类的中间件&…

macOS使用Karabiner-Elements解决罗技鼠标G304连击、单击变双击的故障

记录一下罗技鼠标G304单击变双击的软件解决过程和方案&#xff08;适用于macOS&#xff0c; 如果是Windows&#xff0c;使用AutoHotKey也有类似解决办法、方案&#xff0c;改日提供&#xff09;&#xff1a; 背景&#xff1a;通过罗技Logitect G HUB软件对罗技的游戏鼠标侧键b…

TikTok美区日销二十万美金爆款黑马!胸贴赛道成功起飞!

从去年开始&#xff0c;一项名为“No bra”&#xff08;无胸罩&#xff09;的挑战就长期刷屏TikTok。随着平台内各大博主和明星站台发声&#xff0c;越来越多用户也参与其中&#xff0c;话题的热度逐渐走向高潮。截止到目前&#xff0c; TikTok上相关话题累计播放量已高达8.3亿…

数据恢复篇:5 款最佳 Mac 数据恢复软件

说到保护我们的数字生活&#xff0c;数据恢复软件的重要性怎么强调都不为过。无论您是意外删除了假期照片的普通用户&#xff0c;还是面临硬盘损坏的专业人士&#xff0c;随之而来的恐慌都是普遍存在的。幸运的是&#xff0c;数据恢复工具可以缓解这些压力。在Mac用户可用的众多…

Postman接口测试工具详解【保姆级教程】

大家好,我是CodeQi! 在我们日常的开发工作中,无论是前端还是后端,API 接口的测试都是必不可少的一环。 你有没有遇到过这样的情况:接口测试工具复杂难用,使用起来让人抓狂;或者手动构造请求效率低下,容易出错? 别担心,我今天要介绍的 Postman 工具,将会彻底改变你…

【实用小工具】Aconvert文件转换神器

1 Aconvert简介 Aconvert.com在线转换各类PDF&#xff0c;文档&#xff0c;电子锁&#xff0c;图像&#xff0c;图标&#xff0c;视频&#xff0c;音频和压缩文件。域名中的“A”代表“ALL”。您可以点击右上角的转换按钮开始快速转换&#xff1a;无需进入目录&#xff0c;直接…

visual studio远程调试

场景一&#xff08;被远程调试的电脑&#xff09; 确定系统位数 我这里是x64的 找到msvsmon.exe msvsmon.exe目录位置解释&#xff1a; “F:\App\VisualStudio\an\Common7\IDE\”是visual studio所在位置、 “Remote Debugger\”是固定位置、 “x64”是系统位数。 拼起来就是…