番石榴:LinkedHashMultimap 值作为列表而不是字符串
Guava : LinkedHashMultimap values as list and not String
我正在阅读 Guava 的 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 解决方案。)
正如我们在 javadoc 中看到的那样,Multimap#entries()
returns Collection<Map.Entry<K,V>>
- so basically, you iterate over each key/value pair, instead of key/(value set). To do so, try turning Multimap<K, V>
to standard Map<K, List<V>>
. You can do that with 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());
});
我正在阅读 Guava 的 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 解决方案。)
正如我们在 javadoc 中看到的那样,Multimap#entries()
returns Collection<Map.Entry<K,V>>
- so basically, you iterate over each key/value pair, instead of key/(value set). To do so, try turning Multimap<K, V>
to standard Map<K, List<V>>
. You can do that with 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());
});