我想要一个由两个键索引的映射(一个映射,其中您使用两个键放置AND检索值)在Java中.为了清楚起见,我正在寻找以下行为:
map.put(key1, key2, value);
map.get(key1, key2); // returns value
map.get(key2, key1); // returns null
map.get(key1, key1); // returns null
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?更具体地说,我应该使用:
Map<K1,Map<K2,V>>
Map<Pair<K1,K2>, V>
其他?
(其中K1,K2,V分别是第一键,第二键和值的类型)
Edw*_*uck 37
你应该用 Map<Pair<K1,K2>, V>
它只包含一个地图,而不是N + 1个地图
关键建设将是显而易见的(创建对)
没有人会对Map的含义感到困惑,因为面向API的程序员不会改变.
数据结构中的停留时间会更短,如果您发现需要稍后进行同步,这是很好的.
Dav*_*ave 15
如果你愿意引进新的库(我推荐),看看表中的番石榴.这基本上完全符合您的要求,也可能添加一些功能,您可能希望所有条目都与您的两个键中的一个匹配.
interface Table<R,C,V>
Run Code Online (Sandbox Code Playgroud)
将一对有序键(称为行键和列键)与单个值相关联的集合.表可以是稀疏的,只有一小部分行键/列密钥对具有相应的值.