繁体   English   中英

多个键具有相同值且可由单个键搜索的数据结构

[英]Data Structure having same value for multiple keys and searchable by individual keys

我有一个用例,其中我必须维护键值对存储,所有键都是唯一的,并且多个键可以映射到相同的值。 而且,每个单独的键都可以搜索它。

例如:

(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等,并且是某些自定义对象,则不要忘记重写哈希码和equals方法。

如果这仍然不能满足您的要求,那么请查看Guava和Apache Commons Collection库中的这些链接,但是您可能必须收集一些有关其性能数字的信息:

  1. https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/keyvalue/MultiKey.html
  2. https://google.github.io/guava/releases/19.0/api/docs/com/google/common/collect/Table.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM