在Java中,可以使用Stream API中的Collectors.groupingBy()
方法來對List進行分組操作。這個方法接受一個Function作為參數,該Function用于定義分組的依據,然后返回一個Map對象,其中key是分組的依據,value是屬于該分組的元素列表。
以下是一個簡單的示例,展示如何使用Collectors.groupingBy()
方法對一個List進行分組操作:
假設有一個Student類:
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
然后我們有一個List
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 20));
students.add(new Student("Bob", 22));
students.add(new Student("Alice", 21));
students.add(new Student("Charlie", 20));
現在我們想要按照Student的name屬性進行分組:
Map<String, List<Student>> groupedStudents = students.stream()
.collect(Collectors.groupingBy(Student::getName));
這樣就可以得到一個Map對象,其中key是Student的name屬性值,value是屬于該分組的Student對象列表。
在上面的示例中,groupedStudents
的結果可能是這樣的:
{
"Alice": [Student{name='Alice', age=20}, Student{name='Alice', age=21}],
"Bob": [Student{name='Bob', age=22}],
"Charlie": [Student{name='Charlie', age=20}]
}