Stream流对list分组并按照某个字段排序
时间: 2023-02-09 12:06:28 浏览: 134
您可以使用Java 8中的Stream流来对list进行分组和排序。首先,使用Collectors.groupingBy()方法将list中的元素分组,然后使用Collectors.sort()方法将分组后的list中的元素按照指定的字段进行排序。例如:
List<Person> people = ...;
Map<String, List<Person>> peopleByCity =
people.stream()
.collect(Collectors.groupingBy(Person::getCity));
Map<String, List<Person>> 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。
阅读全文