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メソッドを実装する必要があります。