这个问题在这里已经有答案了:
如何从可以属于两个或多个组的列表中对对象进行分组(3个答案)
4个月前关门了。
我有两个列表:“组”和“人”。最后,我想得到一个Map分组的每个'组'。由于上一个flatmap方法,下面的代码无法编译,表示“不能从静态上下文引用非静态方法”。
private static Map<Group, List<Person>> getAllGroupsOfSelectedPeople(List<Person> people) {
List<Group> groups = getCurrentlyActiveGroups(people);
return people.stream()
.filter(p -> CollectionUtils.isNotEmpty(p.getSocials()))
.filter(p -> p.getGroups().stream().anyMatch(groups::contains))
.collect(Collectors.groupingBy(p -> p.getGroups().stream().flatMap(List::stream)));
}
1条答案
按热度按时间lvjbypge1#
flatMap
应该在collect
步骤,生成所有对Group
以及Person
. 然后你可以把这些对分组。