实体类Test
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进行排序。
Map<String, List<Test>> groupedAndSorted = beans.stream()
.collect(Collectors.toMap(
User::getId, // 分组id
Collections::singletonList,
(existing, replacement) -> {
List<User> merged = new ArrayList<>(existing);
merged.addAll(replacement);
// 排序
merged.sort(Comparator.comparing(User::getXh));
return merged;
},
LinkedHashMap::new
));