我有格式的地图地图
Map < Integer, Map < String, Integer >>
Run Code Online (Sandbox Code Playgroud)
如果我有格式的数据
<1>, << X, 11 >, < Y, 13 >, < Z, 15 >>
<2>, << X,12 >, < A, 23 >, < L, 41 >>
Run Code Online (Sandbox Code Playgroud)
如何使用Java 8 lambda处理它并生成以下内容
<1>, <[11, 13, 15]>
<2>, <[12, 23, 41]>
Run Code Online (Sandbox Code Playgroud)
这是生成另一个Map,其中键是外部地图的键,值是内部Map的值的List.我知道如何以常规方式执行此操作,但我正在研究如何使用Java 8 Lambda.
您可以使用Collectors.toMap重新创建Map<Integer, List<Integer>>:
input.entrySet().stream()
.collect(Collectors.toMap(e->e.getKey(),
e->new ArrayList(e.getValue().values())));
Run Code Online (Sandbox Code Playgroud)
在这段代码中,我们收集Entry<Integer, Map<String, Integer>>到Map<Integer, List<Integer>>通过变换它们,这样的值将成为List<Integer>内部地图的价值,而键保持不变.