如何实现具有多个键的地图?

2022-08-31 06:48:35

我需要一个行为类似于Map的数据结构,但使用多个(不同类型)键来访问其值。
(让我们不要太笼统,让我们说个键)

保证密钥是唯一的。

像这样:

MyMap<K1,K2,V> ...

使用如下方法:

getByKey1(K1 key)...
getByKey2(K2 key)...
containsKey1(K1 key)...
containsKey2(K2 key)...

您有什么建议吗?

我唯一能想到的是:
编写一个在内部使用两个Map的类。

编辑有些人建议我使用元组,一或类似的作为Java Map的键,但这对我不起作用
如上所述,我必须能够仅通过指定的两个键中的一个来搜索值。
地图使用键的哈希代码并检查它们的相等性。


答案 1

两张地图。一和一.如果必须具有单个接口,请编写实现所述方法的包装类。Map<K1, V>Map<K2, V>


答案 2

共享资源集合提供了您正在寻找的东西:https://commons.apache.org/proper/commons-collections/apidocs/

看起来现在共享资源集合是键入的。

键入的版本可以在以下位置找到:https://github.com/megamattron/collections-generic

这将完全支持您的用例:

 MultiKeyMap<k1,k2,...,kn,v> multiMap = ??

推荐