与行主要顺序相反,在切换到下一行之前处理所有行的值时,按列主要顺序处理列的所有值,然后切换到下一列。有关完整说明,请参阅Row-major_order。如果您有:
final int[][] array = {
{11, 12, 13},
{21, 22, 23}};
final int n_row = array.length;
final int n_col = array[0].length;
那么这个打印:
for (int i_col = 0; i_col < n_col; i_col++) {
System.out.printf("col[%d]:", i_col);
for (int i_row = 0; i_row < n_row; i_row++) {
System.out.printf(" %d", array[i_row][i_col]);
}
System.out.println();
}
列优先的顺序值。有三列各有两个值:
col[0]:11 21
col[1]:12 22
col[2]:13 23
这只适用于矩形阵列。也就是说,每行都包含相同数量的值。在此相反打印:
for (int i_row = 0; i_row < n_row; i_row++) {
System.out.printf("row[%d]:", i_row);
for (int i_col = 0; i_col < n_col; i_col++) {
System.out.printf(" %d", array[i_row][i_col]);
}
System.out.println();
}
在对Java通常行优先顺序的值:每个
row[0]: 11 12 13
row[1]: 21 22 23
两排具有三个值。由于它包含每个一个维数组作为值(列)的事实的二维阵列是(行)的一个维阵列可以做较短:
for (final int[] row: array) {
System.out.print("row:");
for (final int val: row) {
System.out.printf(" %d", val);
}
System.out.println();
}
外环在迭代int[][]
,其中每行包含int[]
作为值。在内循环中迭代,然后遍历值int[]
数组。
Java的8方式是不那么优雅由于该阵列是原语int[]
的数组:
Arrays.asList(array).forEach(row -> { for (final int val: row) System.out.println(val); });
添加'I
我不明白。你能解释一下吗? – dcrearer