如何实现双向地图

时间:2012-05-09 17:11:31

标签: java algorithm

我知道Google的番石榴甚至是Apache公共提供双向地图。但是,我想知道它们是如何实现的。从我发现的一点点来看,最简单的方法是使用2个单独的映射来存储键/值和值/键数据。但是,肯定有更好的方法吗?谷歌的实施肯定不是那么简单吗?魔术在哪里?

谢谢!

2 个答案:

答案 0 :(得分:2)

显然就是这样(Louis Wasserman)。

答案 1 :(得分:0)

如果您考虑一下,实际上可以使用单个Object-> Object map实现一种双向映射,其中(key,value)对插入映射两次,每个方向一次。只要您不需要明确的反向视图,它就可以工作。在键和值具有相同类型(允许相同的对象是键和值)的情况下,您只能在给定键和值之间具有单个映射(O1-> O2暗示O2-> ; O1),而对于传统的BiMaps,您可以有效地具有两个(O1-> O2,具有反向O2-> O1和O3-> O1,具有反向O1-> O3)。但是对于许多双向地图需求,单地图解决方案就足够了。