4

可能重复:
Java Hashmap:如何从值中获取键?

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

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

2 回答 2

6

我认为您正在寻找 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 示例,请参阅此帖子。

于 2012-12-09T04:15:05.000 回答
2

您可能会考虑使用Guava接口的实现BiMap,例如HashBiMap. 从文档中:

双映射(或“双向映射”)是一种映射,它保留其值的唯一性以及其键的唯一性。此约束使 bimap 能够支持“反向视图”,这是另一个 bimap,包含与此 bimap 相同的条目,但具有相反的键和值。

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

于 2012-12-09T04:14:54.623 回答