【发布时间】:2018-07-24 11:41:06
【问题描述】:
Java 8 在 Collectors 中提供了 groupingBy 函数,但它提供了元素映射。我需要将地图转换为单个列表。
它还返回结果,但我想要的是对列表本身执行分组操作,这样我就不必重新分配它,因为在 lambda 表达式中无法重新分配。
我怎样才能做到这一点?
我想实现这个:
Map<String, List<Node>> nodeListGrouped = nodeList.stream().collect(Collectors.groupingBy(node -> node.getGroupName()));
将 nodeListGrouped 转换为单个 List
但是 nodeListGrouped.values() 返回 Collection(List)
【问题讨论】:
-
Collectors.collectingAndThen(Collectors.toMap(whatevermappings), map -> {whatever transformations from map to List you have in mind})? -
顺便说一句,您在这里已经是 4 年的会员,您确实明白,除非您提供详细信息/示例,否则这会因为不清楚而被关闭?
-
所以你的问题是
values返回一个Collection<List<Node>>而你想要一个List<Node>? -
是的,我也无法重新分配 groupedList,因为它给出了错误“列表应该是最终的或有效的最终”
标签: lambda java-8 collectors