6

我需要一种可以在两个方向访问的映射,因此使用键键结构而不是键值。这在Java中存在吗?如果没有,创建它的最佳方法是什么?

所以例子:

mySpecialHashMap.put("key1", "key2");

mySpecialMap.getL2R("key1") returns "key2";
mySpecialMap.getR2L("key2") returns "key1";
4

4 回答 4

23

所以你想要一个双向地图。为此,您可以使用Apache Commons Collections BidiMapGoogle Collections BiMap

于 2009-11-05T13:12:11.197 回答
3

您可能想从Guava库(以前称为 Google Collections)中查看BiMap 。

HashBiMap用作“mySpecialHashMap”的示例:

BiMap<String, String> myBiMap = HashBiMap.create();
myBiMap.put("key1", "key2");

myBiMap.get("key1"); // returns "key2"
myBiMap.inverse().get("key2"); // returns "key1"
于 2009-11-05T13:12:40.947 回答
2

是的,有来自 Google Collections的BiMap 。

于 2009-11-05T13:11:39.793 回答
1

或者对于可逆枚举,请参阅这个 Stackoverflow 问题

于 2009-11-05T13:13:22.897 回答