「グループ化」と呼ばれているとは思いませんが、次のことを達成する必要があります。クラスがあります
class Person {
String name;
Set<String> groups;
}
私には何人かの人がいます:
- 父 => {"労働者", "男性"}
- 母 => {"女性"}
- 息子 => {"学生","男性"}
- 娘 => {"学生","女性"}
したがって、すべての人が複数のカテゴリの一部になることができます。そして、次のマッピングを取得したい:
"Worker" => {Father}
"Men" => {Father, Son}
"Student" => {Son, Daughter}
"Woman" => {Mother, Daughter}
これで、すべての人を手動で反復処理して、Map<String,List<Person>>
次のように、ストリーム(またはStreamEx)ワンライナーでそれを行うためのよりエレガントなワットを見つけようとしています:
List<Persons> family= ...;
Map<String,List<Person>> groupped = family.stream().groupByMultipleAttributes(Person::getGroups)