需要一个允许重复值的双向Map,并返回给定键

时间:2016-09-21 19:23:02

标签: java c# python data-structures

我需要一个我认为应该是常见需求的数据结构 我需要一个允许重复值的地图(最常见的是,但等待......到达目的地)..查看此示例

k1 -> v1
k2 -> v1
k3 -> v1
k4 -> v2
k5 -> v2

现在如果我做map.getByValue(v1),我应该得到Set(k1,k2,k3)。否则它应该表现得像一个正常的'地图。它应该有很高的性能,所以请不要提出循环的建议 另请注意,以下内容不适合我

v1 -> (k1, k2, k3)
v2 -> (k4, k5)

..因为我不想要这种情况(注意,k1在两个列表中)..

v1 -> (k1, k2, k3)
v2 -> (k4, k5, k1)

我不想使用两个地图解决方案。我正在考虑某种方法来保持值的排序,以便getByValue(value)仍然具有高性能。

1 个答案:

答案 0 :(得分:0)

高性能意味着您需要某种索引来搜索密钥。没有索引可以在两个方向上工作,所以实际上你需要其中两个。所以你必须使用两个multimaps,每个方向一个,以及一个将它们保持在一致状态的包装器。