获取2D数组的行和列计数而不迭代它

时间:2014-01-26 12:05:51

标签: java matrix multidimensional-array

我有一个带2D阵列的功能。我想知道是否有任何方式获得2D数组的行和列而不必迭代它。方法签名不得更改。

功能在ninetyDegRotator类中。

public static int [][] rotate(int [][] matrix){

    int [][] rotatedMatrix = new int[4][4];//need actual row n col count here
    return rotatedMatrix; //logic

}

主要代码是

public static void main(String args[]){

    int [][] matrix = new int[][]{
            {1,2,3,4},
            {5,6,7,8},
            {9,0,1,2},
            {3,4,5,6}
    };

    System.out.println("length is " + matrix.length);
    int [][] rotatedMatrix = ninetyDegRotator.rotate(matrix);
} 

同样matrix.length给了我4。所以我猜它是行数,这意味着1D数组中的引用数量本身包含数组。那么有没有办法在没有迭代的情况下获得计数?

2 个答案:

答案 0 :(得分:53)

如果保证每行的长度相同,只需使用:

int rows = matrix.length;
int cols = matrix[0].length;  // assuming rows >= 1

(在数学方面,这当然是有保证的,但在大多数语言中很可能有一个数组数组,其中内部数组所有相同的长度)。

答案 1 :(得分:4)

int row = mat.length;
int col= mat[0].length;

大多数在数​​组中所有行都有相同的长度。因此,上述解决方案几乎每次都有效。