在Java中,你可以使用Java 8引入的Stream API来对集合进行分组和排序。以下是一个示例代码,展示了如何对一个`List
import java.util.Arrays;import java.util.Comparator;import java.util.List;import java.util.Map;import java.util.stream.Collectors;class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public int getAge() {return age;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + "}";}}public class GroupSortExample {public static void main(String[] args) {Listpeople = Arrays.asList( new Person("Alice", 30),new Person("Bob", 25),new Person("Charlie", 30),new Person("David", 25),new Person("Eve", 20));// 按照age分组,并按照name排序,取每个分组的第一个值MapgroupedSortedPeople = people.stream() .collect(Collectors.groupingBy(Person::getAge,Collectors.collectingAndThen(Collectors.toList(), list -> {list.sort(Comparator.comparing(Person::getName));return list.get(0);})));groupedSortedPeople.forEach((age, person) -> System.out.println("Age: " + age + ", Name: " + person));}}
在这个示例中,我们首先创建了一个`Person`类,然后创建了一个`Person`对象的列表。我们使用`stream()`方法将列表转换为一个流,然后使用`collect()`方法结合`Collectors.groupingBy()`和`Collectors.collectingAndThen()`来对`Person`对象进行分组和排序。`groupingBy()`方法根据`age`属性进行分组,而`collectingAndThen()`方法则用于在分组后对每个分组内的`Person`对象按照`name`属性进行排序,并取每个分组的第一个值。

