我正在阅读有关番石榴的文章,LinkedHashMultimap并认为这可能对我有用。
我有一张地图的要求如下:
Key:Value
A B
A C
A D
P Q
P R
Run Code Online (Sandbox Code Playgroud)
如果上面是我的地图中的输入,那么我想LinkedHashMultimap用来创建一个地图,例如:
Key : Value
A List<B,C,D>
P List<Q,R>
Run Code Online (Sandbox Code Playgroud)
尝试使用,LinkedHashMultimap但存在以下问题:
mapLen.entries().stream().forEach(entry -> {
System.out.println("mapTemp2 key + " + entry.getKey());
System.out.println("mapTemp2 value + " + entry.getValue());
});
Run Code Online (Sandbox Code Playgroud)
上方会String在地图中显示值,而不是List<String>。
有人可以指出如何做到这一点。
(请注意:我知道迭代,检查和创建列表并将其插入map的常规Java核心解决方案。)
正如我们在javadoc中所看到的,Multimap#entries()返回Collection<Map.Entry<K,V>>-因此,基本上,您遍历每个键/值对,而不是键/(值集)。为此,请尝试转向Multimap<K, V>standard Map<K, List<V>>。您可以使用进行操作Multimap#asMap(),因此您的代码应如下所示:
mapLen.asMap().entrySet().stream().forEach(entry -> {
System.out.println("mapTemp2 key + " + entry.getKey());
System.out.println("mapTemp2 value + " + entry.getValue());
});
Run Code Online (Sandbox Code Playgroud)
PS。我猜您之后错过了括号...entries-这是一种方法,而不是属性,因此您应该使用:
// vv DOWN HERE
mapLen.entries().stream().forEach(entry -> {
System.out.println("mapTemp2 key + " + entry.getKey());
System.out.println("mapTemp2 value + " + entry.getValue());
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |