0

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

谢谢!

4

2 回答 2

2

显然,仅此而已(Louis Wasserman)。

于 2012-07-31T19:54:55.300 回答
0

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

于 2012-05-09T20:58:52.100 回答