在MDiDimensional array(n<m)java中访问NDiDimensional array的索引
为了简化上下文,假设我们在Java中有一个2D数组,我们需要得到给定1D数组的索引。有没有更干净的方法来做同样的事情?我的数组的大小非常小(3 x 8),所以我设法使用for循环强制元素并获得索引,但是如果数组的大小足够大怎么办?出于我的目的,我使用了以下代码:
private int getIndex(double[][] centerArrayOriginal, double[] row){
double[] currRow;
int index = -1;
for (int i=0; i<centerArrayOriginal.length;i++){
currRow = centerArrayOriginal[i];
if ((currRow[0] == row[0]) && (currRow[1] == row[1]) && (currRow[2] == row[2])){
index = i;
}
}
return index;
}
显然,这不是最干净的方法,我尝试了使用ArrayList
个double[]
元素并使用了.indexOf()
方法,但它总是返回-1
# 1 楼答案
如果必须在数组中搜索给定的行,我看不到“暴力强制”的替代方法。但是,当您使用
double
数组时,应该注意,由于舍入错误,如果row
1D数组来自例如计算结果,则行查找算法可能无法工作。只有当centerArrayOriginal
和row
的数据都由double
个文本(常量)组成时,才应该假设可靠的结果无论如何,这里有一个解决方案,它使用两个嵌套for循环从任意大小的2D数组中查找行:
测试代码:
打印出来