假设我有一个对象 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(使用前将#替换为@)