发送密钥时获取值

问题描述 投票:0回答:1

我有此番石榴多地图代码:

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并获得结果is

java guava
1个回答
0
投票

areis都是映射到 sec-key。没有直接使用多图通过不同值查找值的简单方法。 mutlimap用于将keys映射到values。不是值到值。

您当然可以做这样的事情,但这效率很低-此代码需要我们遍历整个地图:

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将是值(或者在Mutlimap的情况下是值之一)。如果您确保两个mutlimap保持同步,则可以在两个方向上快速查找。

© www.soinside.com 2019 - 2024. All rights reserved.