首页 > 编程笔记 > Java笔记 阅读:2

Java二维数组的用法(附带实例)

Java 语言中并没有真正的多维数组,它们被实现为数组的数组。本节以最常用的二维数组为例,讲解 Java 多维数组的基本用法。

例如,以下是声明和实现二维整数数组的方法:
int[][] square = {
{ 16, 3, 2, 13 },
{ 5, 10, 11, 8 },
{ 9, 6, 7, 12 },
{ 4, 15, 14, 1}
};
从技术上讲,这是一个一维的 int[] 数组,见下图:


图 1 二维数组

要访问一个元素,请使用两对方括号:
int element = square[1][2]; // Sets element to 11
其中,第一个索引选择行数组 square[1],第二个索引表示从该行中选取元素。

你甚至可以交换一整行,例如:
int[] temp = square[0];
square[0] = square[1];
square[1] = temp;

如果未提供初始值,则必须使用 new 运算符并指定行数和列数:
int[][] square = new int[4][4]; // First rows, then columns
在之后的应用场景中,行数组的每一行都由一个数组填充。这里并不要求行数组具有相等的长度。

【实例】存储帕斯卡三角形。
1
1  1
1  2  1
1  3  3  1
1  4  6  4  1
...
1) 首先构造一个 n 行的数组:
int[][] triangle = new int[n][];

2) 然后使用循环构造每一行,并填充:
for (int i = 0; i < n; i++) {
   triangle[i] = new int[i + 1];
   triangle[i][0] = 1;
   triangle[i][i] = 1;
   for (int j = 1; j < i; j++) {
      triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
   }
}

3) 要遍历一个二维数组,需要使用两个循环,一个用于行,另一个用于列:
for (int r = 0; r < triangle.length; r++) {
   for (int c = 0; c < triangle[r].length; c++) {
      System.out.printf("%4d", triangle[r][c]);
   }
   System.out.println();
}
也可以使用增强 for 循环:
for (int[] row : triangle) {
   for (int element: row) {
      System.out.printf("%4d", element);
   }
   System.out.println();
}
这些循环适用于矩阵数组以及具有不同行长度的数组。

注意,Java 中没有二维数组列表,但可以声明一个 ArrayList<ArrayList><Integer> 类型的变量,并自己构建每一行。

相关文章