Collectors.groupingBy 排序

在Java开发中,使用groupingBy进行集合分组时,默认使用HashMap可能导致分组后顺序变化。通过研究源码,发现问题在于HashMap的无序特性。解决方案是替换为LinkedHashMap,它能保持插入时的顺序。这一调整对于需要保持原始顺序的场景至关重要。

背景

最近项目开发用到对集合进行分组,按照区域分组后发现和集合的顺序不一致

发现问题

查出来的数据集合

在这里插入图片描述
在这里插入图片描述

进行排序后再用groupingBy进行聚合,发现数据的顺序发生了变化

在这里插入图片描述

探索过程

打开源码
第一个参数:分组按照哪个字段分组

第二个参数:分组最后用什么容器保存返回

第三个参数:分组后的结果如何收集

问题应该是出在了第二个参数 默认用hashmap保存分组后的数据 hashmap无序
在这里插入图片描述

问题解决

将第二个参数替换成LinkedHashMap
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值