如何在java中迭代数组[...] [i](列)

时间:2014-11-19 09:14:57

标签: java arrays matrix iterator multidimensional-array

有一种非常简单的方法可以在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:正如我在主要问题的最后一段中所提到的,我所知道的最简单的方法是将矩阵和迭代转置到其行上。

3 个答案:

答案 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的答案就是您正在寻找的。

编辑:转置:

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 Classcommons math library。它有一个getColumnAsDoubleArray()方法,它将指定的列作为数组返回。