Java 8 在 Collectors 中提供了 groupingBy 函数,但它给出了元素的映射。我需要将 map 转换为单个列表。
它也返回结果,但我想要的是对列表本身执行分组操作,这样我就不必重新分配它,因为在 lambda 表达式中不可能重新分配。
我怎样才能实现这个目标?
我想实现这个:
Map<String, List<Node>> nodeListGrouped = nodeList.stream().collect(Collectors.groupingBy(node -> node.getGroupName()));
将nodeListGrouped转换为单个List
但是nodeListGrouped.values()返回Collection(List)
最佳答案
我想这就是你正在寻找的(虽然我还没有编译这个)
List<Node> list =
nodeList.stream()
.collect(Collectors.collectingAndThen(
Collectors.groupingBy(Node::getGroupName),
map -> map.values()
.stream()
.flatMap(List::stream)
.collect(Collectors.toList())
));
关于lambda - 在java中GroupBy并合并到一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51497686/