我需要一种数据结构,我认为这应该是一种常见的需求
我需要一个允许重复值的 map (最常见的是这样做,但是等等..进入重点)..请参阅此示例
k1 -> v1
k2 -> v1
k3 -> v1
k4 -> v2
k5 -> v2
现在,如果我执行map.getByValue(v1),我应该得到 Set(k1, k2, k3) 。否则它的行为应该像“正常” map 。它应该具有高性能,因此请不要提供 for 循环类型的建议。
另请注意,以下内容对我不起作用
v1 -> (k1, k2, k3)
v2 -> (k4, k5)
..因为我不希望出现这种情况(注意,k1 在两个列表中)..
v1 -> (k1, k2, k3)
v2 -> (k4, k5, k1)
我不想使用两个 map 解决方案。我正在考虑某种方法来保持值排序,以便 getByValue(value) 仍然具有高性能。
最佳答案
高性能意味着您需要某种索引来搜索键。没有可以双向工作的索引,因此实际上您需要其中两个。因此,您必须使用两个多重贴图,每个方向一个,以及一个使它们保持一致状态的包装器。
关于java - 需要一个双向 Map,它允许重复值,并返回给定键的值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39624938/