Java Hashmap:如何从值获取密钥?

问题:

如果我的值为"foo"HashMap<String> ftw ftw.containsValue("foo")返回true,我如何获得相应的密钥?我必须循环使用hashmap吗?什么是最好的方法呢?

回答:

如果您选择使用Commons Collections library而不是标准Java Collections API,则可以轻松实现。
集合库中的BidiMap接口是双向映射,允许您将键映射到值(如法线贴图),还可以将值映射到键,从而允许您在两个方向执行查找。 getKey() method支持获取值的键值
有一个警告,但是,双子座地图不能将多个值映射到密钥,因此除非您的数据集在密钥和值之间具有1:1的映射,否则不能使用双向标识。
 更新
如果要依赖Java Collections API,则必须确保在将值插入到映射中时键和值之间的1:1关系。这比说起来容易一些。
一旦您可以确保,使用entrySet() method获取地图中的一组条目(映射)。一旦获得了类型为Map.Entry的集合,迭代条目,将stored value与预期相比较,并获得corresponding key
 更新#2
可以在Google Guava和重构的Commons-Collections库(后者不是Apache项目)中找到支持泛型的双向地图。感谢Esko指出Apache Commons Collections中缺少的通用支持。使用集合与泛型使得更可维护的代码。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java Hashmap: How to get key from value?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

43 − = 41