2012-12-09 88 views
4

可能重复:
Java Hashmap: How to get key from value?Java的映射数据结构

我寻找,我可以上的按键和执行查找一个Java数据结构(某种地图)价值。例如,假设我有一组字符串和整数之间的一对一映射。调用这个对象映射器。我想能够执行以下操作:

  1. mapper.getAssociated(value):这将返回键
  2. mapper.getAssociated(key):这将返回值
+0

可能有多个具有相同值的键?这是允许的。? – Subin

+0

我认为这个问题的答案会有帮助:http://stackoverflow.com/questions/1383797/java-hashmap-how-to-get-key-from-value –

回答

2

您可以考虑使用的Guava的实现BiMap接口,例如HashBiMap。从文档:

甲bimap的(或“双向映射”)是地图,可以保留 唯一其值以及它的密钥。这个限制 使bimaps支持“反向视图”,这是另一个bimap ,其中包含与该bimap相同的条目,但具有反向键和 值。

所以给予BiMap<Foo, Bar>你可以调用inverse()返回一个BiMap<Bar, Foo>视图。

5

我认为您正在寻找google guava BiMap(或)commons BidiMap

实施例:

BidiMap bidiMap = new DualHashBidiMap(); 
bidiMap.put("il", "Illinois"); 
bidiMap.put("az", "Arizona"); 
bidiMap.put("va", "Virginia"); 
// Retrieve the key with a value via the inverse map 
String vaAbbreviation = bidiMap.inverseBidiMap().get("Virginia"); 

// Retrieve the value from the key 
String illinoisName = bidiMap.get("il"); 

查看此信息以供BiMap Example