有没有一个很好的理由为什么Pair<L,R>Java中没有?这个C++构造的等价物是什么?我宁愿避免重新实现自己.
似乎1.6提供类似的东西(AbstractMap.SimpleEntry<K,V>),但这看起来很复杂.
我需要一个行为类似于Map的数据结构,但使用多个(不同类型的)键来访问其值.
(我们不要太笼统,让我们说两把钥匙)
钥匙保证是独一无二的.
就像是:
MyMap<K1,K2,V> ...
Run Code Online (Sandbox Code Playgroud)
使用以下方法:
getByKey1(K1 key)...
getByKey2(K2 key)...
containsKey1(K1 key)...
containsKey2(K2 key)...
Run Code Online (Sandbox Code Playgroud)
你有什么建议吗?
我唯一能想到的是:
编写一个内部使用两个Maps的类.
编辑
有些人建议我使用元组,对或类似作为Java Map的键,但这对我不起作用:
如上所述,我必须能够通过两个键中的一个来搜索值指定.
地图使用密钥的哈希码并检查它们的相等性.
我有一个整数的2D数组.我希望将它们放入HashMap中.但我想基于Array Index访问HashMap中的元素.就像是:
对于A [2] [5],map.get(2,5)它返回与该键相关联的值.但是如何使用一对键创建hashMap?或者一般来说,多个键:Map<((key1, key2,..,keyN), Value)我可以使用get(key1,key2,... keyN)访问元素.
编辑:发布问题3年后,我想补充一点
我遇到了另一种方式NxN matrix.
数组索引,i和j可被表示为一个单一的key方式如下:
int key = i * N + j;
//map.put(key, a[i][j]); // queue.add(key);
Run Code Online (Sandbox Code Playgroud)
并且可以通过key以下方式从这些指数中恢复指数:
int i = key / N;
int j = key % N;
Run Code Online (Sandbox Code Playgroud) 可能的重复:
如何实现具有多个键的 Map?
单值映射的多个键 Java
我必须根据两个传入的字符串属性获取枚举的值。我一直在做这个作为单个值的映射。现在我面临着串联。有没有办法让地图有两个键,这样我就可以
Map.get("attr1","attr2");
Run Code Online (Sandbox Code Playgroud)
这将返回正确的枚举。或者我是否只需要连接所有可能的值并将其用作键?
我正在寻找干净的解决方案(我们不都是:P)