Java 流:获取按内部映射键分组的值
2022-09-03 13:29:45
我有,我想使用Java Streams从中获取它。Map<A, Map<B, C>>
Map<B, List<C>>
我尝试按如下方式进行:
public <A, B, C> Map<B, List<C>> groupsByInnerKey(Map<A, Map<B, C>> input) {
return input.values()
.stream()
.flatMap(it -> it.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey));
}
我的期望:
-
flatMap
给出一个Stream
Map.Entry<B, C>
-
collect(Collectors.groupingBy(...))
接受应用于并返回的函数,因此它将 的值收集到 。Map.Entry<B, C>
B
C
List<C>
但它不会编译,从字面上看:
不能从静态上下文中引用非静态方法
在最后一行。Map.Entry::getKey
有人可以解释什么是错的,或者什么是实现我想要的正确方法吗?