Java 哈希映射反向键查找
我有一个哈希映射,我引用该键以获得如下值:Java 哈希映射反向键查找,java,Java,我有一个哈希映射,我引用该键以获得如下值: // define the hashmap private static final Map<String, String> map; static { map.put("KEY1", "VALUE1"); map.put("KEY2", "VALUE2"); } // use the key to get a value private static final SomeObject MyObject1 = MyObjec
// define the hashmap
private static final Map<String, String> map;
static {
map.put("KEY1", "VALUE1");
map.put("KEY2", "VALUE2");
}
// use the key to get a value
private static final SomeObject MyObject1 = MyObject.compile(map.get("KEY1"));
...
//定义hashmap
私有静态最终地图;
静止的{
地图放置(“键1”、“值1”);
地图放置(“键2”、“值2”);
}
//使用键获取值
私有静态final SomeObject MyObject1=MyObject.compile(map.get(“KEY1”);
...
但是稍后在我的代码中,我得到了一个值,我需要得到密钥(我如何才能做到这一点):
//基于条件匹配从映射返回值的某个方法
字符串值=();
//现在我有了价值**我怎样才能得到钥匙**
System.out.println(“找到键匹配:”+map.getKeyFromValue(theValue);/???
考虑使用哈希映射而不是哈希映射:
bimap(或“双向映射”)是保留其值及其键的唯一性的映射。此约束使bimap支持“反向视图”,即另一个包含与此bimap相同条目但键和值反向的bimap
然后,您可以执行以下操作:
String key = map.inverse.get(theValue);
考虑使用HashMap而不是HashMap:
bimap(或“双向映射”)是保留其值及其键的唯一性的映射。此约束使bimap支持“反向视图”,即另一个包含与此bimap相同条目但键和值反向的bimap
然后,您可以执行以下操作:
String key = map.inverse.get(theValue);
如果使用番石榴BiMap不是一个选项(),那么您必须迭代地图条目,直到找到具有匹配值的条目:
for (Map.Entry<String, String> entries : map.entrySet())
{
if (entry.getValue().equals(theValue())
{
return entry.getKey(); // we found it
}
}
// We couldn't find it ...
for(Map.Entry条目:Map.entrySet())
{
如果(entry.getValue().equals)(theValue())
{
return entry.getKey();//我们找到了它
}
}
//我们找不到它。。。
如果使用番石榴BiMap不是一个选项(),那么您必须迭代地图条目,直到找到具有匹配值的条目:
for (Map.Entry<String, String> entries : map.entrySet())
{
if (entry.getValue().equals(theValue())
{
return entry.getKey(); // we found it
}
}
// We couldn't find it ...
for(Map.Entry条目:Map.entrySet())
{
如果(entry.getValue().equals)(theValue())
{
return entry.getKey();//我们找到了它
}
}
//我们找不到它。。。
是的,番石榴的署名是:“番石榴:用于Java 1.6+的谷歌核心库”很酷,我会试一试。再次感谢!正如广告所说的那样有效!而且,这两个答案对我来说最有意义(尽管它们来自同一位作者)。=)是的,番石榴的署名是:“番石榴:用于Java 1.6+的谷歌核心库。”很酷,我会试一试。再次感谢!正如广告所宣传的那样工作!而且,这两个答案对我来说最有意义(即使它们来自同一作者)。=)@SubhrajyotiMajumder:这是两个不同的答案。如果你能给我指一个解释这是件坏事的元帖子,我会改变它,但对我来说这似乎是正确的。@SubhrajyotiMajumder:这是两个不同的答案。如果你能给我指一个解释这是件坏事的元帖子,我会改变它,但看起来不是他对我做了正确的事。