[版权声明] 本站内容采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆 (CC BY-NC-SA 3.0 CN) 进行许可。
部分内容和资源来自网络,纯学习研究使用。如有侵犯您的权益,请及时联系我,我将尽快处理。
如转载请注明来自: Broly的博客,本文链接: 利用Guava的BiMap实现双向Map
Java自带的Map只是K-V型的单向映射,一般情况下是够用的了。
但是最近做项目发现有一个情景,一方面要根据K拿到V,另一方面,又需要从V反推到K。如果用Java自带的Map来实现,就是做两个Map或者遍历V找到K,感觉复杂了点。
这个时候,有个工具类值得使用了:Guava的BiMap
使用方法:
value不可以有相同的key
1 2 3 4 5 6 7 8 9 10 11 12 |
BiMap<String, String> biMap = HashBiMap.create(); // value可以作为Key,即value不可以有多个对应的值 biMap.put("hello", "world"); biMap.put("123", "tell"); biMap.put("123", "none"); // 覆盖tell // biMap.put("abc", "world"); 失败 // 下面是强制替换第一对 biMap.forcePut("abc", "world"); System.out.println(biMap.size()); // 2 System.out.println(biMap.get("hello"));// null System.out.println(biMap.get("abc")); // world System.out.println(biMap.get("123")); // none |
键值对互换得到新的BiMap
1 2 3 4 5 |
// 键值对互换 BiMap<String, String> inverseMap = biMap.inverse(); System.out.println(inverseMap.get("world")); // abc System.out.println(inverseMap.get("tell")); // null System.out.println(inverseMap.get(null)); // null |
参考链接:《Guava工具类学习》