使用值从哈希映射中获取密钥
2022-09-01 10:06:58
我想使用该值获取哈希映射的密钥。
hashmap = new HashMap<String, Object>();
haspmap.put("one", 100);
haspmap.put("two", 200);
这意味着我想要一个函数,它将采用值100并返回字符串1。
似乎这里有很多问题问同样的事情,但它们不适合我。
也许是因为我是Java的新手。
怎么办?
我想使用该值获取哈希映射的密钥。
hashmap = new HashMap<String, Object>();
haspmap.put("one", 100);
haspmap.put("two", 200);
这意味着我想要一个函数,它将采用值100并返回字符串1。
似乎这里有很多问题问同样的事情,但它们不适合我。
也许是因为我是Java的新手。
怎么办?
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这样的东西就是你想要的。
我们可以从.下面是一个示例code_KEY
VALUE
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;
}
}
我希望这将帮助每个人。