【发布时间】:2016-08-24 11:31:27
【问题描述】:
假设我有这个数组:
double[][] Q = new double[n1][n2];
我可以使用int 索引来索引Q 的值,例如Q[2][1]。但就我而言,n1 是byte[],而不是int。我仍然知道n1 的可能值(例如,数组值的所有可能组合)。我应该使用什么集合而不是array?
HashMap<byte[], Double>[] Q = new HashMap[n2];
这是我的解决方案,但我不确定它是否足够。要索引,我可以做
byte[] n1 = {1,0,6,1,4,2,5,1};
Q[1].get(n1);
有没有更好的方法来做到这一点?性能更高的东西?我认为拥有一个 HashMaps 数组并不理想,但我可以将 int 添加到我的密钥中吗?怎么样?
如 cmets 所述,
使用数组作为哈希映射键的问题(除了它是可变的)是数组不会根据它们的内容计算它们的哈希码;因此,除非您有实际的键实例,否则您实际上无法在地图中查找值。
那么如何使用数组作为索引键呢?一个愚蠢的解决方案是在使用它之前始终将其转换为 String,但我相信有更好和更合适的解决方案。
【问题讨论】:
-
int比byte宽,那么使用二维数组有什么问题呢?当然,使用另一种数据结构可能会更好地解决您的问题。 -
使用数组作为哈希映射键的问题(除了它是可变的)是数组不会根据它们的内容计算它们的哈希码;因此,除非您有实际的键实例,否则您实际上无法在地图中查找值。
-
啊!那么如何使用数组进行索引呢?我是否必须每次都将其转换为
String?这样做的正确方法是什么? -
您可以将其包装在另一个类中,该类使用数组的内容覆盖
equals和hashCode,并将其用作键。 -
这些字节数组是做什么用的?
标签: java collections