Java Stream APIでgroupBy!グループ化処理の基本と実践

JavaのStreamでは、ストリーム内の要素をグループ化するために、groupByメソッドを使用することができます。groupByメソッドは、要素のキーを抽出するためにFunctionを受け取り、グループ化された値をキー、そのグループに属する要素のリストを値として持つMapオブジェクトを返します。

以下に示す通り:

Personオブジェクトを含むListがあると仮定し、それぞれのPersonオブジェクトにはageプロパティがあります。私たちはageプロパティに基づいてグループ化したいと思います。

List<Person> persons = Arrays.asList(
    new Person("Alice", 25),
    new Person("Bob", 30),
    new Person("Charlie", 25),
    new Person("David", 30)
);

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

groupedByAge.forEach((age, people) -> {
    System.out.println("Age " + age + ": " + people);
});

この例では、まずListをStreamに変換するためにstreamメソッドを使用し、次にcollectメソッドとgroupingByメソッドを使用してグループ化を行います。最後に、forEachメソッドを使用して各グループを繰り返し、結果を出力します。

注意:上記の例では、Personクラスは年齢属性を取得するためのgetAgeメソッドを実装する必要があります。

bannerAds