java - 对多个键具有相同值并可按单个键搜索的数据结构
问题描述
我有一个用例,其中我必须维护键值对存储,所有键都是唯一的,并且多个键可以映射到相同的值。它也应该可以通过每个单独的键进行搜索。
例如:
(K1,K2,K3) -> V1
(K3,K4) -> V2
(K5) -> V3
and so on.
在 K2 上搜索它应该返回 V1
它有点类似于 Multikeymap 但可以通过单个键进行搜索。是否有任何数据结构可以让我在 O(1) 中执行此操作。
解决方案
没有这样的 DS 可以在恒定的 O(1) 时间内给出结果,但 HashMap 应该足够好。对于插入、删除和搜索操作,哈希映射的平均复杂度为 O(1)。如果您使用的是 JDK8 ,那么频繁冲突对性能的影响也会更小。请参阅:https ://dzone.com/articles/hashmap-performance 。
由于只有值的引用存储在 Map 中,即使键和值的数量不匹配,存储也不应该是一个大问题。
如果键不是 Long、String、Int 等并且是一些自定义对象,请不要忘记覆盖 hashcode 和 equals 方法。
如果这仍然不能满足您的要求,请查看 Guava 和 Apache Commons Collection 库中的这些链接,但您可能需要收集一些有关其性能数据的信息:
推荐阅读
- python - 通过简单的数学计算问题理解 python 多线程,如何在 python 中更快地编写代码
- systemd - ExecStartPost 脚本是一个无限循环脚本 - 有可能吗?
- hyperledger-fabric - 如何在超级账本结构中添加 raft 而不是 kafka?
- tcl - 如何删除单个字母/数字
- d - Tkd 小部件找不到行和列选项
- laravel - 向所有路由添加变量
- java - 如何更改底线 EditText 颜色?
- bigdata - 如何使用历史数据集丰富 Flink DataStream
- javascript - 有什么方法可以使用动态锚标记保存图像 url?
- php - Wordpress:允许的内存大小已用尽