gpt4 book ai didi

Java流和分组: put object to multiple groups

转载 作者:行者123 更新时间:2023-12-02 01:06:34 25 4
gpt4 key购买 nike

我不认为这被称为“分组”,但我需要实现以下目标:我有课

class Person {
String name;
Set<String> groups;
}

我有一些人:

  1. 父亲 => {" worker ", "男人"}
  2. 母亲 => {“女人”}
  3. 儿子 => {"学生","男人"}
  4. 女儿 => {"学生","女人"}

因此,每个人都可以属于多个类别。我想得到以下映射:

"Worker" => {Father}
"Men" => {Father, Son}
"Student" => {Son, Daughter}
"Woman" => {Mother, Daughter}

现在我可以通过手动迭代每个人并将他们放入 Map<String,List<Person>> 来做到这一点

我正在尝试找到一个更优雅的 wat 来使用流(或 StreamEx)oneliner 来完成此操作,例如:

List<Persons> family= ...;
Map<String,List<Person>> groupped = family.stream().groupByMultipleAttributes(Person::getGroups)

最佳答案

您可以生成所有关联的组和 Person 对,然后使用 groupingBy 将它们收集到 Map 中:

Map<String,List<Person>> groups =
family.stream()
.flatMap(p -> p.getGroups()
.stream()
.map(g -> new SimpleEntry<>(g,p)))
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue,
Collectors.toList())));

关于Java流和分组: put object to multiple groups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59968420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com