有一种非常简单的方法可以在java中访问2D数组的行
for (int i = 0 ; i < integer2D.length ; i++)
getMyArray(integer2D[i]);
但是,我在网上搜索找到了迭代2D数组列的简单方法,比如
for (int j = 0 ; j < integer2D[0].length ; j++)
getMyArray(integer2D[][i]);
或
for (int j = 0 ; j < integer2D[0].length ; j++)
getMyArray(integer2D[...][i]);
适用于某些编程语言。我刚刚找到了类RealMatrix和MatrixUtils,我可以将我的array2D转换为一个真正的矩阵然后转置它并再次将其转换为数组并迭代它。但我想存在一种更简单的方法?
编辑:迭代行,正如我在第一段代码中所提到的那样容易,但主要问题是如何迭代列,如第二和第三代码在其他一些编程语言中工作。< / p>
Edit2:正如我在主要问题的最后一段中所提到的,我所知道的最简单的方法是将矩阵和迭代转置到其行上。
答案 0 :(得分:2)
如果我理解了您的问题,您可以使用for-each
作为获取每一行的简单方法
for (int[] row : integer2D) { // <-- for each int[] in the int[][]
for (int val : row) { // <-- for each int in the int[] row
// ...
}
}
答案 1 :(得分:0)
只提供一个索引将为您提供整行,所以:
integer2D[5] // returns an int[]
将为您提供一个整数数组,这是矩阵中的第6行。
如果直接提供两个索引,则获得“cell”的值
integer2D[5][1] // returns an int
将为您提供第6行第二列的值。
这是对您的矩阵的直接访问,如果您想要遍历行,Elliott的答案就是您正在寻找的。 p>
编辑:转置:
int width = array.length;
int height = array[0].length;
int[][] array_new = new int[height][width];
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
array_new[y][x] = array[x][y];
}
}
答案 2 :(得分:0)
为此,您可以使用BigMatrixImpl Class的commons math library。它有一个getColumnAsDoubleArray()方法,它将指定的列作为数组返回。