如果我不仅需要快速搜索密钥,而且还需要快速搜索,那该怎么办?换句话说,是否有像key-key这样的结构而不是key-value?在Java中我可以有一个键 - 键映射(而不是键值)吗?
8
A
回答
9
听起来像你想bimap - 我会使用Guava如果我是你的实现;有一个BiMap
接口,以及各种实现,例如HashBiMap
和ImmutableBiMap
。
请注意,您通常从一个“边”(K1到K2)查看BiMap
,并且只需拨打inverse()
即可获得事物(K2到K1)的相反视图。
5
几家图书馆都有类似的东西。例如,Google Guava有一个BiMap
(双向映射)。不幸的是,标准Java库中没有双向映射。
0
为了澄清,你有某种地图与以下项:值对:
Map<String, String> map = new HashMap<String, String>();
map.put("foo", "Freddy");
map.put("bar", "Bobby");
然后,你会想要做map.get(“富”),并得到弗雷迪,或做map.get(“Freddy”)并获得foo?
如果是这样,检查this post了。
请注意,番石榴的'BiMap'基本上是两个'Map'放在一起并保持对称,所以如果你不想添加额外的库,你可以自己做。 – Viruzzo 2012-01-16 15:44:29