实体类Test
java">public class Test{private String id;private String xh;
}
按xh排序后的testlist,
直接进行分组的方法:
Map<String,List<Test>> groupbyGradeList =testlist.stream().collect(Collectors.groupingBy(Test::getId));
这样按id分组 会发现获取的map的 id的顺序不是xh的顺序基础下分组
分组操作会丢失原始列表中的顺序信息,因为分组的结果是一个Map,而Map(如HashMap)不保证顺序。
然而,如果你想要在分组后仍然能够按照某个字段(如xh)对分组内的元素进行排序,你可以这样做:
首先,根据字段id进行分组。
然后,对分组后的每个列表根据字段xh进行排序。
java"> Map<String, List<Test>> groupedAndSorted = beans.stream().collect(Collectors.toMap(User::getId, // 分组idCollections::singletonList, (existing, replacement) -> { List<User> merged = new ArrayList<>(existing);merged.addAll(replacement);// 排序merged.sort(Comparator.comparing(User::getXh));return merged;},LinkedHashMap::new ));