Java:按子值作为值分组

2024-01-10

假设我有一个对象 Person,其字段类型为 FirstName 和 LastName。现在我也有一个List<Person>我喜欢使用流。

现在我想生成一个Map<FirstName, List<LastName>>为了将具有相同名字的人分组。我如何在不编写太多代码的情况下解决这个问题?到目前为止我的方法是

personList
.stream()
.collect(Collectors.groupingBy(
    Person::getFirstName,
    person -> person.getLastName() // this seems to be wrong
));

但这似乎是分配地图值的错误方法。我应该改变什么?或者我应该使用 .reduce 与new HashMap<FirstName, List<LastName>>()作为初始值,然后通过将元素放入其中来聚合它?


personList.stream()
          .collect(Collectors.groupingBy(
               Person::getFirstName,
               Collectors.mapping(Person::getLastName, Collectors.toList())));

您正在寻找下游收集器groupingBy

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:按子值作为值分组 的相关文章

随机推荐