以下に、いくつかのシンプルで簡単なコード例を示します。
例1: オブジェクトのリストを特定のプロパティでグループ化する
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("John", 25),
new Person("Jane", 30),
new Person("Tom", 25),
new Person("Alice", 30)
);
Map<Integer, List<Person>> groupedByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge));
System.out.println(groupedByAge);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
この例では、Person
オブジェクトのリストを年齢(age
)でグループ化しています。groupingBy
メソッドを使用して、age
プロパティをキーとしてグループ分けし、Map<Integer, List<Person>>
として結果を取得しています。
例2: 文字列リストを文字数でグループ化する
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "orange", "kiwi", "grape");
Map<Integer, List<String>> groupedByLength = fruits.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(groupedByLength);
}
}
この例では、文字列のリストを文字数でグループ化しています。groupingBy
メソッドを使用して、String
オブジェクトのlength
メソッドをキーとしてグループ分けし、Map<Integer, List<String>>
として結果を取得しています。
これらのコード例を使用することで、Javaでストリームを使用してGroup Byを実装する方法を学ぶことができます。必要に応じて、オブジェクトやプロパティを適切に置き換えて使用してください。