如何在Hashmap中返回特定值的键?

时间:2013-12-25 17:53:03

标签: java hashmap key-value

我的HashMap中有以下条目

<key1,value1>
<key2,value2>
<key3,value2>
<key4,value4>
<key5,value2>

我想找到包含值“value2”的所有键。 答案是包含以下键的KeySet: {KEY2,KEY3,KEY4}

是否可以在HashMap中实现? 感谢

3 个答案:

答案 0 :(得分:1)

Map应该以这样的方式使用,即使用键访问值,但似乎你正在反向进行。

如果你确定自己在做什么,那就没有好办法了。迭代地图并将密钥存储在单独的列表中。

更多关注Gauva的Multimap,这可能适合您的要求。

答案 1 :(得分:1)

  

我想找到包含值“value2”的所有键。答案是包含以下键的KeySet:{key2,key3,key4}

两个选项:

  • 新地图,其中值是键,键是值(如果每个键和值都是唯一的)
  • 遍历地图的条目并检查当前条目的值是否等于“value2”,如果是,则添加一个带有结果的集合

答案 2 :(得分:1)

只需迭代地图的条目并检查当前条目的值是否等于“value2”,然后将其添加到Set。 试试这个

Set<String> keySet = new HashSet<String>();
for (Map.Entry<String, String> entry : map.entrySet())
{
    if(entry.getValue().equals("value2")
    {
      keySet.add(entry.getKey());
    }

}

我猜没有其他选择,因为你的地图中有重复的值。