使用值从哈希映射中获取密钥

2022-09-01 10:06:58

我想使用该值获取哈希映射的密钥。

hashmap = new HashMap<String, Object>();

haspmap.put("one", 100);
haspmap.put("two", 200);

这意味着我想要一个函数,它将采用值100并返回字符串1。

似乎这里有很多问题问同样的事情,但它们不适合我。

也许是因为我是Java的新手。

怎么办?


答案 1

HashMap 中的 put 方法定义如下:

Object  put(Object key, Object value) 

key 是第一个参数,所以在你的 put 中,“one”是 key。您无法在HashMap中按值轻松查找,如果您真的想这样做,那么它将是通过调用来完成的线性搜索,如下所示:entrySet()

for (Map.Entry<Object, Object> e : hashmap.entrySet()) {
    Object key = e.getKey();
    Object value = e.getValue();
}

但是,这是O(n),并且有点违背了使用HashMap的目的,除非您只需要很少这样做。如果你真的希望能够经常按键或值进行查找,那么核心Java没有适合你的东西,但是像Google Collections中的BiMap这样的东西就是你想要的。


答案 2

我们可以从.下面是一个示例code_KEYVALUE

 public class Main {
  public static void main(String[] args) {
    Map map = new HashMap();
    map.put("key_1","one");
    map.put("key_2","two");
    map.put("key_3","three");
    map.put("key_4","four");
System.out.println(getKeyFromValue(map,"four")); } public static Object getKeyFromValue(Map hm, Object value) { for (Object o : hm.keySet()) { if (hm.get(o).equals(value)) { return o; } } return null; } }

我希望这将帮助每个人。