Collectors.groupingBy()返回排序后的结果

javalist.jpg


背景:

数据库中查出了一个list集合,需要对该集合进行分组汇总如

A:[]

B:[]

C:[]

如此格式的map

List<TableEntity> entity= entityService.list();
Map<String, List<String>> entityMap = entity.stream().collect(
Collectors.groupingBy(TableEntity::getStringKey,Collectors.mapping(TableEntity::getListString, Collectors.toList() )
));
虽然在service获取List时已经按照条件进行了排序,但是在使用Collectors.groupingBy()方法时,最终形成的map是无序的,因为Collectors.groupingBy返回的是一个无序的HashMap,因此,这里需要用到LinkedHashMap来使

HashMap变的有序(JDK1.4+),因此,做如下修改。

Map<String, List<String>> entityMap = entity.stream().collect(
Collectors.groupingBy(TableEntity::getStringKey,
LinkedHashMap::new ,Collectors.mapping(TableEntity::getListString, Collectors.toList() )
));


qrcode