我对Java的HashMap的两个问题:哈希多图问题
1)是否有可能在Java中的HashMap的任何实施得到的值对应的密钥?我正在使用HashMultiMap(键 - )多个值)。
2)是否有可能在Java HashMap的任何实现中获取HashMap中的Key位置?如果是这样,那么如果我添加新的密钥,钥匙位置是否有可能改变?我正在使用HashMultiMap(键 - )多个值)。
如果他们两个都回答不是,怎么可能手动实现(任何想法?)?
我对Java的HashMap的两个问题:哈希多图问题
1)是否有可能在Java中的HashMap的任何实施得到的值对应的密钥?我正在使用HashMultiMap(键 - )多个值)。
2)是否有可能在Java HashMap的任何实现中获取HashMap中的Key位置?如果是这样,那么如果我添加新的密钥,钥匙位置是否有可能改变?我正在使用HashMultiMap(键 - )多个值)。
如果他们两个都回答不是,怎么可能手动实现(任何想法?)?
1)是的,但效率不高,界面Map
中没有任何方法可以通过一个方法调用完成。你必须遍历地图的条目,直到找到你正在查找的值;那么你有相应的条目的关键。有实施例如Google Guava'sBiMap
,这可以让你有效地进行反向查找。
2)不,因为地图不是有序的集合:键在地图中没有定义的位置。如果你需要这个,你可以使用例如LinkedHashMap
,它保持键值对在地图中插入的顺序。
非常感谢。但是,HashMultiMap(具有多个值的键)也可能吗? – Arpssss 2012-03-12 08:52:14
我在这里找到了(http://www.javacodegeeks.com/2011/09/google-guava-libraries-essentials.html)BitMap示例,其中只有具有Single值的键。这也可能是Key with Multiple value吗? – Arpssss 2012-03-12 09:01:34
据我所知,Guava中既没有现成的实现,也没有'BiMap'和'Multimap',所以你必须自己编写一个查找方法。 – Jesper 2012-03-12 12:07:43
你是什么意思的“在地图上的位置”?地图不是可转位的,所以这并不意味着什么。 – 2012-03-12 08:42:59
@JoachimSauer,我在一些web文档中发现,通过使用其他一些像HashMap这样的结构是可能的,但不是很清楚。这就是为什么,我问。 – Arpssss 2012-03-12 08:48:09
你想通过获得职位来解决什么问题?你为什么在乎*? – 2012-03-12 08:52:41