java8中groupingBy时自定义Map类型
1、场景
业务中,需要对数据根据日期排序后再根据某个字段分组groupingBy,但是在测试时发现,groupingBy会打乱之前排序好的内容,查看groupingBy的底层发现,默认会分组成HashMap的类型。
2、解决方案
为了让分组后的数据不变化排序的顺序,所以需要用LinkedHashMap来存放数据。即使用三参数的groupingBy,指定返回有序的LinkedHashMap。
Collectors.groupingBy(InventoryDetailItemVO::getPostingPeriodName, LinkedHashMap::new, Collectors.toList())
Map<String, List<InventoryDetailItemVO>> postingName2ItemList =
itemVOList.stream()
.sorted(Comparator.comparing(InventoryDetailItemVO::getPostingAt))
.collect(Collectors.groupingBy(
InventoryDetailItemVO::getPostingPeriodName,
LinkedHashMap::new,
Collectors.toList()
));
.End
给个一键三连吧~