Java映射数据结构

时间:2012-12-09 04:11:28

标签: java data-structures map mapping

  

可能重复:
  Java Hashmap: How to get key from value?

我正在寻找一种Java数据结构(某种地图),我可以在其中对Keys和Values执行查找。例如,假设我在一组字符串和整数之间有一对一的映射。调用此对象映射器。我希望能够执行以下操作:

  1. mapper.getAssociated(value):这将返回密钥
  2. mapper.getAssociated(key):这会返回值

2 个答案:

答案 0 :(得分:5)

我认为您正在寻找谷歌guava BiMap(或)公地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的这篇文章。

答案 1 :(得分:2)

您可以考虑使用GuavaBiMap接口的实现,例如HashBiMap。来自文档:

  

bimap(或“双向地图”)是保留地图的地图   其价值的独特性以及其价值的独特性。这个约束   使bimaps支持“逆视图”,这是另一个bimap   包含与此bimap相同的条目,但使用反向键和   值。

因此,如果给出BiMap<Foo, Bar>,您可以致电inverse()以返回BiMap<Bar, Foo>视图。