关于Collectors.groupingBy分组后乱序的问题
原因:
Collectors.groupingBy分组后默认返回HashMap类型,HashMap是无序的
解决:
将HashMap类型修改为LinkedHashMap即可
示例:
newList = list .stream() .sorted(Comparator.comparing(Student::getSage)) .collect(Collectors.groupingBy(Student::getSage, LinkedHashMap::new, Collectors.toList()));
-- Collectors.groupingBy 观看源码可知
-- Student::getSage (Function<? super T, ? extends K> classifier)解释:根据字段进行分组
-- LinkedHashMap::new (Supplier<M> mapFactory)解释:分组最后用什么容器保存返回
-- Collectors.toList() (Collector<? super T, A, D> downstream)解释:收集分类的结果的收集器