我正在阅读关于番石榴的LinkedHashMultimap
,并认为这对我有用。
我有一个要求,即我有一张地图如下:
Key:Value
A B
A C
A D
P Q
P R
如果以上是我地图中的输入,那么我想使用LinkedHashMultimap
创建一个地图,如:
Key : Value
A List<B,C,D>
P List<Q,R>
尝试使用LinkedHashMultimap
,但它有以下问题:
mapLen.entries().stream().forEach(entry -> {
System.out.println("mapTemp2 key + " + entry.getKey());
System.out.println("mapTemp2 value + " + entry.getValue());
});
上方打印地图中的String
值,而不是List<String>
。
有人可以指出如何做到这一点。
(请注意:我知道正常的核心java解决方案,包括迭代,检查和创建列表并插入到地图中。)
答案 0 :(得分:4)
正如我们在javadoc中看到的那样,Multimap#entries()
返回Collection<Map.Entry<K,V>>
- 所以基本上,你遍历每个键/值对,而不是键/(值集)。为此,请尝试将Multimap<K, V>
转为标准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());
});
PS。我猜你在...entries
之后错过了括号 - 这是一个方法,而不是一个属性,所以你应该使用:
// vv DOWN HERE
mapLen.entries().stream().forEach(entry -> {
System.out.println("mapTemp2 key + " + entry.getKey());
System.out.println("mapTemp2 value + " + entry.getValue());
});