Google的Guava提供了BiMap这样一个双向Map,调用inverse()方法会返回一个反向的关联的BiMap,然后便可以通过get()方法获取key值了。 代码如下:
@
Test
public void test() {
BiMap
<String
, Integer
> biMap
= HashBiMap
.create();
biMap
.put("A", 1);
biMap
.put("B", 2);
biMap
.put("C", null);
biMap
.put("D", 4);
System
.out.print(biMap
.inverse().get(1));
}
需要注意的是,BiMap作为一个双向的Map,它不能存储多对一的关系;而HashMap是可以的。其实很好理解,因为是双向的,所以即要满足Key值的唯一性,也要满足Value值的唯一性。如果往里存放同样的Value,会抛异常:java.lang.IllegalArgumentException: value already present。