实战按月分类list数据
数据源:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| { "2018年08月":[ { "createTime":"2018-08-15 15:51:16" }, { "createTime":"2018-08-15 15:51:15" } ], "2018年09月":[ { "createTime":"2018-09-15 15:51:16" }, { "createTime":"2018-09-15 15:51:15" } ] }
|
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class ThematicMap extends BaseBean { .... public String getMonth(){ Date createTime= this.getCreateTime(); SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月"); return format1.format(createTime.getTime()); } }
List<ThematicMap> thematicMapList = thematicMapMapper.listForPage(params);
Map<String,List<ThematicMap>> stringListMap=thematicMapList.stream().collect(Collectors.groupingBy(ThematicMap::getMonth,LinkedHashMap::new,Collectors.toList()));
|
Collectors.groupingBy(Function<? super T, ? extends K> classifier, Supplier<M> mapFactory, Collector<? super T, A, D> downstream)
有三个参数
如果不考虑顺序一个参数即可thematicMapList.stream().collect(Collectors.groupingBy(ThematicMap::getMonth));
第二个参数是指定容器:默认值是HashMap::new
,但是它会导致乱序,因此使用LinkedHashMap
最终数据结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| { "2018年08月":[ { "createTime":"2018-08-15 15:51:16" }, { "createTime":"2018-08-15 15:51:15" } ], "2018年09月":[ { "createTime":"2018-09-15 15:51:16" }, { "createTime":"2018-09-15 15:51:15" } ] }
|
参考
Collectors.groupingBy分组后的排序问题