Java 8 での複数のフィールドによるグループ化
複数のフィールド名によるオブジェクトのグループ化は、Java プログラミングでは一般的な操作であり、簡単に実行できます。これは、Java 8 の Stream API と Collectors.groupingBy() メソッドを使用して実現されます。
提供されるコード質問では、単一のフィールド名でオブジェクトをグループ化する方法を示しています:
Map<Integer, List<Person>> peopleByAge = people .collect(Collectors.groupingBy(p -> p.age, Collectors.mapping((Person p) -> p, toList())));
複数のフィールドでオブジェクトをグループ化するには、最初のオプションは複数のコレクターをチェーンすることです:
Map<String, Map<Integer, List<Person>>> map = people .collect(Collectors.groupingBy(Person::getName, Collectors.groupingBy(Person::getAge)));
別のオプション次のコードで、NameAge などのグループ化基準を表すクラスを作成します。
class Person { record NameAge(String name, int age) { } public NameAge getNameAge() { return new NameAge(name, age); } } ... Map<NameAge, List<Person>> map = people.collect(Collectors.groupingBy(Person::getNameAge));
最後に、それが可能になります。 Apache Commons Pair などのサードパーティ ライブラリを使用して、グループ化用のペア オブジェクトを作成します。
Map<Pair<String, Integer>, List<Person>> map = people.collect(Collectors.groupingBy(p -> Pair.of(p.getName(), p.getAge())));
これらのグループ化手法を活用することで、Java 8 で複数のフィールド名によってオブジェクトを効率的にグループ化することができます。特定の基準に基づいてデータを整理し、アクセスするための便利な方法です。
以上がJava 8 ストリームを使用して複数のフィールドでオブジェクトをグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。