java ArrayList按照同一属性进行分组
发布时间 - 2026-01-10 23:07:38 点击率:次java ArrayList按照同一属性进行分组

前言:
通常使用SQL查询一批数据的时候,可以利用SQL中的GROUP BY语句对数据进行分组,但是有时候出于对性能的考虑,不会使用GROUP BY,而是先把数据捞出来后,使用代码,在内存中按照某个属性进行分组。
代码
public class SkuVo {
private Long skuId;
private String productName;
private Long brandStoreSn;
public SkuVo(Long skuId, String productName, Long brandStoreSn) {
super();
this.skuId = skuId;
this.productName = productName;
this.brandStoreSn = brandStoreSn;
}
public Long getSkuId() {
return skuId;
}
public void setSkuId(Long skuId) {
this.skuId = skuId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public Long getBrandStoreSn() {
return brandStoreSn;
}
public void setBrandStoreSn(Long brandStoreSn) {
this.brandStoreSn = brandStoreSn;
}
@Override
public String toString() {
return "SkuVo [skuId=" + skuId + ", productName=" + productName + ", brandStoreSn=" + brandStoreSn + "]";
}
}
假设从数据查询出一批数据,存在了List<SkuVo> 里面了。使用一个算法按照skuId对List<SkuVo>进行分组,skuId相同的归为一组.
分组算法
public class TestArrayListGroupByKey {
public static void main(String[] args) {
/*1、准备数据**/
SkuVo sku1 = new SkuVo(1L,"p1",100L);
SkuVo sku2 = new SkuVo(2L,"p2",101L);
SkuVo sku3 = new SkuVo(3L,"p3",102L);
SkuVo sku4 = new SkuVo(3L,"p4",103L);
SkuVo sku5 = new SkuVo(2L,"p5",100L);
SkuVo sku6 = new SkuVo(5L,"p6",100L);
List<SkuVo> skuVoList = Arrays.asList(new SkuVo [] {sku1,sku2,sku3,sku4,sku5,sku6});
/*2、分组算法**/
Map<Long, List<SkuVo>> skuIdMap = new HashMap<>();
for (SkuVo skuVo : skuVoList) {
List<SkuVo> tempList = skuIdMap.get(skuVo.getSkuId());
/*如果取不到数据,那么直接new一个空的ArrayList**/
if (tempList == null) {
tempList = new ArrayList<>();
tempList.add(skuVo);
skuIdMap.put(skuVo.getSkuId(), tempList);
}
else {
/*某个sku之前已经存放过了,则直接追加数据到原来的List里**/
tempList.add(skuVo);
}
}
/*3、遍历map,验证结果**/
for(Long skuId : skuIdMap.keySet()){
System.out.println(skuIdMap.get(skuId));
}
}
}
结果如下
[SkuVo [skuId=1, productName=p1, brandStoreSn=100]] [SkuVo [skuId=2, productName=p2, brandStoreSn=101], SkuVo [skuId=2, productName=p5, brandStoreSn=100]] [SkuVo [skuId=3, productName=p3, brandStoreSn=102], SkuVo [skuId=3, productName=p4, brandStoreSn=103]] [SkuVo [skuId=5, productName=p6, brandStoreSn=100]]
从输出结果看,数据已经按照skuId进行分组了。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# ArrayList按照同一属性进行分组
# ArrayList分组
# ArrayList属性分组
# JAVA ArrayList详细介绍(示例)
# Java中ArrayList类的使用方法
# java的arraylist排序示例(arraylist用法)
# Java ArrayList 数组之间相互转换
# Java中ArrayList的removeAll方法详解
# java ArrayList集合中的某个对象属性进行排序的实现代码
# Java针对ArrayList自定义排序的2种实现方法
# Java中Arraylist动态扩容方法详解
# java 对ArrayList进行分页实例代码
# 你真的理解Java中的ArrayList吗
# 过了
# 遍历
# 希望能
# 谢谢大家
# 先把
# 可以利用
# 捞出
# 数据查询
# setProductName
# setBrandStoreSn
# getBrandStoreSn
# setSkuId
# return
# void
# getSkuId
# getProductName
# color
# List
# ff
# toString
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
怎样使用JSON进行数据交换_它有什么限制
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Laravel如何处理异常和错误?(Handler示例)
Linux后台任务运行方法_nohup与&使用技巧【技巧】
高性能网站服务器配置指南:安全稳定与高效建站核心方案
详解jQuery停止动画——stop()方法的使用
网站制作软件有哪些,制图软件有哪些?
C++时间戳转换成日期时间的步骤和示例代码
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
javascript中闭包概念与用法深入理解
如何在建站主机中优化服务器配置?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
活动邀请函制作网站有哪些,活动邀请函文案?
简单实现Android验证码
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Swift开发中switch语句值绑定模式
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
javascript中对象的定义、使用以及对象和原型链操作小结
Laravel如何创建自定义Artisan命令?(代码示例)
如何在宝塔面板中创建新站点?
如何选择PHP开源工具快速搭建网站?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
node.js报错:Cannot find module 'ejs'的解决办法
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
香港服务器部署网站为何提示未备案?
微信小程序 scroll-view组件实现列表页实例代码
详解Android图表 MPAndroidChart折线图
如何快速搭建安全的FTP站点?
如何在Windows环境下新建FTP站点并设置权限?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
高性价比服务器租赁——企业级配置与24小时运维服务
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
如何用5美元大硬盘VPS安全高效搭建个人网站?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
如何在建站之星绑定自定义域名?
网易LOFTER官网链接 老福特网页版登录地址
微信推文制作网站有哪些,怎么做微信推文,急?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
EditPlus中的正则表达式 实战(2)
phpredis提高消息队列的实时性方法(推荐)
如何快速登录WAP自助建站平台?
详解阿里云nginx服务器多站点的配置

