是否可以在没有两个循环的情况下遍历二维数组?

Jho*_*tos 1 java arrays for-loop

例如,如果我有:

int Myarray[][] = new int[][] {{1,2}, {3,4}};
for (int line=0; line < Myarray.length; line++) {
    for (int column = 0; column < Myarray[0].length; column++) {
        // do something ...
    }
}
Run Code Online (Sandbox Code Playgroud)

如果没有两个循环,我怎么能遍历整个数组?

Tim*_*sen 7

那么你可以只使用一个循环:

for (int i = 0; i < Myarray.length*Myarray.length; i++) {
    int row = i / Myarray.length;
    int col = i % Myarray.length;
    System.out.println(Myarray[row][col]);
}
Run Code Online (Sandbox Code Playgroud)

但这假设您的二维数组是方形的,即它的宽度和长度在任何地方都相同。另一种说法是二维数组不是锯齿状的。

演示

注意:正如上面提到的@Thilo,这不会使事情运行得更快。如果您需要接触数组中的每个元素,那么我建议的代码和您当前的双循环基本上具有相同的复杂性。