首页
点滴
解决Java8中通过groupingBy分组后数据顺序错乱问题
开发中有时候会碰到需要把列表数据分组处理的情况,如下: ``` // 查询列表数据 List
list = gridDataMapper.findList(query); // 按bigCategory分组 Map
> bigCategoryMap = list.stream().collect(Collectors.groupingBy(GridData::getBigCategory)); ``` 这样得到的Map分组数据顺序是不保证的。 查看源码看到`HashMap::new`,原来默认是用HashMap来处理,所以是无序的。 ``` public static
Collector
> groupingBy(Function super T, ? extends K> classifier, Collector super T, A, D> downstream) { return groupingBy(classifier, HashMap::new, downstream); } ``` 源码中还提供了一个三个参数的方法 ``` public static
> Collector
groupingBy(Function super T, ? extends K> classifier, Supplier
mapFactory, Collector super T, A, D> downstream) { ``` 这样我们可以传个有序的Map实现类`LinkedHashMap`进去就可以了 ``` // 有序分组 Map
> bigCategoryMap = list.stream().collect(Collectors.groupingBy(GridData::getBigCategory, LinkedHashMap::new, Collectors.toList())); ```
博客分类
源码解析 (1)
多线程 (5)
Java (10)
Linux (8)
Docker (9)
SpringBoot (14)
微服务 (1)
Redis (15)
MySQL (7)
VMware (3)
Nginx (15)
MyBatis (2)
RabbitMQ (1)
Git (7)
工具类 (12)
前端 (3)
友情链接
layui
© 2020-2025 www.chenhuazhan.com All Rights Reserved 备案号:
桂ICP备17004487号-1
粤公网安备44030002005146