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。

您可以使用Java 8中的Stream流来对list进行分组和排序。首先,使用Collectors.groupingBy()方法将list中的元素分组,然后使用Collectors.sort()方法将分组后的list中的元素按照指定的字段进行排序。例如: List people = ...; Map peopleByCity = people.stream() .collect(Collectors.groupingBy(Person::getCity)); Map 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。
您可以使用Java 8中的Stream流来对list进行分组和排序。首先,使用Collectors.groupingBy()方法将list中的元素分组,然后使用Collectors.sort()方法将分组后的list中的元素按照指定的字段进行排序。例如: List people = ...; Map peopleByCity = people.stream() .collect(Collectors.groupingBy(Person::getCity)); Map 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。
经验分享 程序员 微信小程序 职场和发展