我有一个二维整数数组。我希望将它们放入 HashMap 中。但我想根据数组索引访问 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);
并且可以通过以下方式从 key
中检索索引:
int i = key / N;
int j = key % N;
原文由 Crocode 发布,翻译遵循 CC BY-SA 4.0 许可协议
有几种选择:
2 维
地图地图
包装键对象
实现
equals()
和hashCode()
在这里至关重要。然后你只需使用:和:
Table
来自番石榴Table
使用下面 _的地图_。N 维
请注意,特殊的
Key
类是唯一可以扩展到 n 维的方法。您还可以考虑:但从性能的角度来看,这很糟糕,可读性和正确性也很糟糕(没有简单的方法来强制执行列表大小)。
也许看看你有元组和
case
类的 Scala(用单线替换整个Key
类)。