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

标签 java c# python data-structures

我需要一种数据结构,我认为这应该是一种常见的需求
我需要一个允许重复值的 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/

相关文章:

java - 从 Java 中的配置文件配置 Akka 路由器

java - Swing 中带有小字体的字符串的边界

c# - 类型执行的动态值

c# - 从 UWP 中的数据库检索数据

python - 将十六进制值作为整数插入 MySQL

java - 嵌套有界通配符

java - 关于java中的抽象类和接口(interface)的几个问题?

c# - 如何将服务器数据库复制到我的本地机器以生成脚本

python - 在 Python 中将二维图形转换为圆柱体

python - 你能解释 keras 模型中 tensorflow 加载和 hdf5 加载之间的区别吗