溫馨提示×

java中l(wèi)ist groupby的用法是什么

小億
284
2024-03-01 12:29:18
欄目: 編程語言

在Java中,可以使用Stream API中的Collectors.groupingBy()方法來對(duì)List進(jìn)行分組操作。這個(gè)方法接受一個(gè)Function作為參數(shù),該Function用于定義分組的依據(jù),然后返回一個(gè)Map對(duì)象,其中key是分組的依據(jù),value是屬于該分組的元素列表。

以下是一個(gè)簡單的示例,展示如何使用Collectors.groupingBy()方法對(duì)一個(gè)List進(jìn)行分組操作:

假設(shè)有一個(gè)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;
    }
}

然后我們有一個(gè)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));

現(xiàn)在我們想要按照Student的name屬性進(jìn)行分組:

Map<String, List<Student>> groupedStudents = students.stream()
    .collect(Collectors.groupingBy(Student::getName));

這樣就可以得到一個(gè)Map對(duì)象,其中key是Student的name屬性值,value是屬于該分組的Student對(duì)象列表。

在上面的示例中,groupedStudents的結(jié)果可能是這樣的:

{
    "Alice": [Student{name='Alice', age=20}, Student{name='Alice', age=21}],
    "Bob": [Student{name='Bob', age=22}],
    "Charlie": [Student{name='Charlie', age=20}]
}

0