0

我想检索与哈希图中的值关联的特定键

我想找回“ME”的key,怎么弄?

代码片段:

HashMap<Integer,String> map = new HashMap<Integer,String>();
map.put(1,"I");
map.put(2,"ME");
4

5 回答 5

3

您正在尝试做的事情有一个小问题。一个 hashmap 中可能会出现多次相同的值,因此如果按值查找键,可能会出现多个结果(具有相同值的多个键)。

但是,如果您确定不会发生这种情况,则可以这样做;请参见以下示例:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<Integer, String>();
        map.put(5, "vijf");
        map.put(36, "zesendertig");
    }
    static Integer getKey(HashMap<Integer, String> map, String value) {
        Integer key = null;
        for(Map.Entry<Integer, String> entry : map.entrySet()) {
            if((value == null && entry.getValue() == null) || (value != null && value.equals(entry.getValue()))) {
                key = entry.getKey();
                break;
            }
        }
        return key;
    }
}
于 2012-08-03T12:42:25.853 回答
2

遍历地图的条目:

for(Entry<Integer, String> entry : map.entrySet()){
  if("ME".equals(entry.getValue())){
    Integer key = entry.getKey();
    // do something with the key
  }
}
于 2012-08-03T12:47:13.447 回答
0

如果保证您的值是唯一的,请使用 Guava BiMap(对应的 HashMap 称为HashBiMap

    Integer key = map.inverse().get("ME");

番石榴文档

于 2012-08-03T12:46:30.870 回答
0

您将不得不遍历键的集合以找到您的值。

查看这篇文章了解详细信息:Java Hashmap: How to get key from value?

于 2012-08-03T12:41:33.970 回答
0
/**
 * Return keys associated with the specified value
 */
public List<Integer> getKey(String value, Map<Integer, String> map) {
  List<Integer> keys = new ArrayList<Integer>();
  for(Entry<Integer, String> entry:map.entrySet()) {
    if(value.equals(entry.getValue())) {
      keys.add(entry.getKey());
    }
  }
  return keys;
}
于 2012-08-03T12:56:04.410 回答