Java 自带的 Map 只是 K-V 型的单向映射,一般情况下是够用的了。
但是最近做项目发现有一个情景,一方面要根据 K 拿到 V,另一方面,又需要从 V 反推到 K。如果用 Java 自带的 Map 来实现,就是做两个 Map 或者遍历 V 找到 K,感觉复杂了点。
Guava 的 BiMap
这个时候,有个工具类值得使用了:Guava 的 BiMap
使用方法: value 不可以有相同的 key
| 12
 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
| 12
 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));
 
 | 
参考链接