Java 自带的 Map 只是 K-V 型的单向映射,一般情况下是够用的了。
但是最近做项目发现有一个情景,一方面要根据 K 拿到 V,另一方面,又需要从 V 反推到 K。如果用 Java 自带的 Map 来实现,就是做两个 Map 或者遍历 V 找到 K,感觉复杂了点。
Guava 的 BiMap
这个时候,有个工具类值得使用了:Guava 的 BiMap
使用方法: value 不可以有相同的 key
1 2 3 4 5 6 7 8 9 10 11 12
| BiMap<String, String> biMap = HashBiMap.create();
biMap.put("hello", "world"); biMap.put("123", "tell"); biMap.put("123", "none");
biMap.forcePut("abc", "world"); System.out.println(biMap.size()); System.out.println(biMap.get("hello")); System.out.println(biMap.get("abc")); System.out.println(biMap.get("123"));
|
键值对互换得到新的 BiMap
1 2 3 4 5
| BiMap<String, String> inverseMap = biMap.inverse(); System.out.println(inverseMap.get("world")); System.out.println(inverseMap.get("tell")); System.out.println(inverseMap.get(null));
|
参考链接