我有Guava Multimap的代码:
/dev/mem
我想在此结构中查询值。
例如:如何发送值String key = "first-key";
Multimap<String, String> map = ArrayListMultimap.create();
map.put(key, "firstValue");
map.put(key, "secondValue");
map.put(key, "thirdValue");
map.putAll("sec-key", Sets.newHashSet("am", "are", "is"));
for (String name : map.keySet()) {
System.out.println("key: " + name);
}
并获得结果are
?
答案 0 :(得分:1)
are
和is
都是值映射到键 sec-key
。没有直接使用多图通过不同值查找值的简单方法。 mutlimap用于将键映射到值。不是值到值。
您当然可以做这样的事情,但这效率很低-此代码要求我们遍历整个地图:
for (Entry<String, String> entry : map.entries()){
if (entry.getValue().equals("are")) {
System.out.println(map.get(entry.getKey())); //will print the values mapped to the same key as `are`.
break;
}
}
更好的解决方案是使用第二个映射,其中以are
为键,以is
为值(如果是{{1 }})。如果您确保两个多图保持同步,则可以在两个方向上快速查找。
答案 1 :(得分:0)
例如:我如何发送价值和获得结果?
“ are”不是映射为值“ is”的键。您只能通过将键传递给地图来获取值。