Java ListのgroupByとは?使い方と実装例を解説

Javaにおいて、ListのgroupByメソッドは通常、Stream APIのgroupByメソッドを使用してList内の要素をグループ化することを指します。具体的な機能は、List内の要素を特定の条件でグループ化し、Mapオブジェクトを返すことで、キーがグループ化条件で値がその条件に合致する要素のリストとなります。

たとえば、複数の学生オブジェクトが含まれるリストがあるとします。各学生オブジェクトには名前と年齢の属性があり、groupByメソッドを使用して年齢でグループ化することができます。同じ年齢の学生を同じリストに入れることで、データを簡単に分類して統計分析することができます。

以下はサンプルコードです。

List<Student> students = Arrays.asList(
    new Student("Alice", 20),
    new Student("Bob", 22),
    new Student("Charlie", 20),
    new Student("David", 21)
);

Map<Integer, List<Student>> groupedByAge = students.stream()
    .collect(Collectors.groupingBy(Student::getAge));

groupedByAge.forEach((age, studentList) -> {
    System.out.println("Students with age " + age + ":");
    studentList.forEach(student -> {
        System.out.println("- " + student.getName());
    });
});

上記のコードは、学生オブジェクトを年齢でグループ化し、それぞれの年齢層に対応する学生リストを出力します。groupByメソッドはコードの論理を簡素化し、可読性と保守性を向上させるのに役立ちます。

bannerAds