Bootstrap

Stream流对list分组并按照某个字段排序 原创

您可以使用Java 8中的Stream流来对list进行分组和排序。首先,使用Collectors.groupingBy()方法将list中的元素分组,然后使用Collectors.sort()方法将分组后的list中的元素按照指定的字段进行排序。例如:

List people = ...;

Map<String, List > peopleByCity = people.stream() .collect(Collectors.groupingBy(Person::getCity));

Map<String, List > sortedPeopleByCity = peopleByCity.entrySet() .stream() .sorted(Map.Entry.comparingByValue(Comparator.comparing(Person::getName))) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));

在上面的代码中,我们使用Collectors.groupingBy()方法将people列表中的元素按照城市分组,然后使用Collectors.sort()方法将分组后的list中的元素按照人名进行排序。最后,使用Collectors.toMap()方法将排序后的list转换为一个有序的map。

;