2012-03-12 102 views
1

我对Java的HashMap的两个问题:哈希多图问题

1)是否有可能在Java中的HashMap的任何实施得到的值对应的密钥?我正在使用HashMultiMap(键 - )多个值)。

2)是否有可能在Java HashMap的任何实现中获取HashMap中的Key位置?如果是这样,那么如果我添加新的密钥,钥匙位置是否有可能改变?我正在使用HashMultiMap(键 - )多个值)。

如果他们两个都回答不是,怎么可能手动实现(任何想法?)?

+1

你是什么意思的“在地图上的位置”?地图不是可转位的,所以这并不意味着什么。 – 2012-03-12 08:42:59

+0

@JoachimSauer,我在一些web文档中发现,通过使用其他一些像HashMap这样的结构是可能的,但不是很清楚。这就是为什么,我问。 – Arpssss 2012-03-12 08:48:09

+1

你想通过获得职位来解决什么问题?你为什么在乎*? – 2012-03-12 08:52:41

回答

6

1)是的,但效率不高,界面Map中没有任何方法可以通过一个方法调用完成。你必须遍历地图的条目,直到找到你正在查找的值;那么你有相应的条目的关键。有实施例如Google Guava'sBiMap,这可以让你有效地进行反向查找。

2)不,因为地图不是有序的集合:键在地图中没有定义的位置。如果你需要这个,你可以使用例如LinkedHashMap,它保持键值对在地图中插入的顺序。

+0

非常感谢。但是,HashMultiMap(具有多个值的键)也可能吗? – Arpssss 2012-03-12 08:52:14

+0

我在这里找到了(http://www.javacodegeeks.com/2011/09/google-guava-libraries-essentials.html)BitMap示例,其中只有具有Single值的键。这也可能是Key with Multiple value吗? – Arpssss 2012-03-12 09:01:34

+2

据我所知,Guava中既没有现成的实现,也没有'BiMap'和'Multimap',所以你必须自己编写一个查找方法。 – Jesper 2012-03-12 12:07:43