有效地迭代二维数组

时间:2017-04-06 10:15:11

标签: java arrays iteration

目前我正在摆弄二维数组用于学习目的,并且遇到了一个我无法找到解决方案的问题。

目标是构建以下输出(请参见下面的网格)

0.0: 0.1
1.0: 1.1
2.0: 2.1
3.0: 3.1
4.0: 4.1

0.0: 0.2
1.0: 1.2
2.0: 2.2
3.0: 3.2
4.0: 4.2
ect

我相信我已经通过以下代码实现了这一点。

StringBuilder sb2 = new StringBuilder();
String newline = System.getProperty("line.separator");

//grid1[0].length = 7

for (int col = 0; col < (grid1[0].length - 1); col++) {
        for (int row = 0; row < grid1.length; row++) {
            sb2.append(grid1[row][0] + ": ");
            sb2.append(grid1[row][col+1] + newline);
        }
        sb2.append(System.getProperty("line.separator"));
    }
    System.out.println(sb2.toString());

我的问题是,如果可以通过以相反的顺序运行数组来实现相同的目标(见下文),并且它们是一种更有效的方式,我已经到达。

for (int row = 0; row < grid1.length; row++) {
   for (int col = 0; col < grid1[0].length; col++) {
      //something
   }
}

网格阵列[5] [7] enter image description here

1 个答案:

答案 0 :(得分:0)

是的,你可以,你可以使用:

for (int row = grid1.length - 1; row >= 0; row--) {
    for (int col = grid1[0].length - 1; col >= 0; col--) {
        ...
    }
}

修改

我尝试了这个,它告诉我:

int grid1[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int row = grid1.length - 1; row >= 0; row--) {
    for (int col = grid1[0].length - 1; col >= 0; col--) {
        System.out.print(grid1[row][col]+ " ");
    }
    System.out.println();
}

9 8 7 
6 5 4 
3 2 1 

而不是:

1 2 3
4 5 6
7 8 9