我需要将name和id存储为键值对。但是我需要在我的程序中同时查找名称和id。我不想创建两个HashMap(或通过存储name-id和id-name对来加倍内存消耗)
它的数据结构是什么? java中是否有针对此的标准实现?
答案 0 :(得分:3)
您也可以使用番石榴BiMap。获得逆映射非常简单:
BiMap<Integer, String> biMap = HashBiMap.create();
biMap.put(1, "a");
biMap.put(2, "b");
BiMap<String, Integer> invertedMap = biMap.inverse(); //to get the name,id map
唯一的限制是您的键和值应该是唯一的。
答案 1 :(得分:0)
Commons-Collections有您可以使用的BidiMap:
http://commons.apache.org/collections/apidocs/org/apache/commons/collections/BidiMap.html
答案 2 :(得分:0)
Guava有HashBiMap
,可以为您跟踪地图的两个方向。目前,它的实现基本上只在每个方向保持HashMap
,但下一个版本将使用自定义数据结构,在内存上节省大约38%。
基本上,HashBiMap
的行为与Map
完全相同,只是它拒绝重复的值,您可以通过调用{{1}来获取另一个方向的视图 - 键的值}。
(披露:我向Guava捐款。)