Mảng nhiều chiều
1. Mảng hai chiều
Phần tiêu đề “1. Mảng hai chiều”Java thực chất mô phỏng mảng nhiều chiều bằng mảng của mảng - một mảng hai chiều int[][] thực chất là một mảng mà mỗi phần tử của nó lại là một mảng int[]:
int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
System.out.println(matrix[0][0]); // 1 - hàng 0, cột 0System.out.println(matrix[1][2]); // 6 - hàng 1, cột 22. Khởi tạo với kích thước cố định
Phần tiêu đề “2. Khởi tạo với kích thước cố định”int[][] grid = new int[3][4]; // 3 hàng, 4 cột, mặc định toàn 0
grid[0][0] = 1;grid[2][3] = 99;3. Duyệt mảng hai chiều
Phần tiêu đề “3. Duyệt mảng hai chiều”int[][] matrix = { {1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < matrix.length; i++) { // matrix.length = số hàng for (int j = 0; j < matrix[i].length; j++) { // matrix[i].length = số cột của hàng i System.out.print(matrix[i][j] + " "); } System.out.println();}
// Hoặc dùng for-each lồng nhaufor (int[] row : matrix) { for (int value : row) { System.out.print(value + " "); } System.out.println();}4. Mảng răng cưa (jagged array)
Phần tiêu đề “4. Mảng răng cưa (jagged array)”Vì mảng nhiều chiều thực chất là “mảng của mảng”, các hàng không bắt buộc phải cùng độ dài:
int[][] jagged = new int[3][]; // 3 hàng, chưa xác định độ dài từng hàngjagged[0] = new int[]{1, 2};jagged[1] = new int[]{1, 2, 3, 4};jagged[2] = new int[]{1};
for (int[] row : jagged) { System.out.println(Arrays.toString(row));}// [1, 2]// [1, 2, 3, 4]// [1]5. In mảng nhiều chiều với Arrays.deepToString
Phần tiêu đề “5. In mảng nhiều chiều với Arrays.deepToString”Arrays.toString() chỉ hoạt động đúng với mảng một chiều - với mảng nhiều chiều, cần Arrays.deepToString():
import java.util.Arrays;
int[][] matrix = {{1, 2}, {3, 4}};
System.out.println(Arrays.toString(matrix)); // [[I@..., [I@...] - KHÔNG như mong đợi!System.out.println(Arrays.deepToString(matrix)); // [[1, 2], [3, 4]] - đúng như mong đợiTổng kết
Phần tiêu đề “Tổng kết”- Mảng nhiều chiều trong Java là “mảng của mảng”, khai báo
<kiểu>[][] tên matrix.lengthlà số hàng,matrix[i].lengthlà số cột của hàngi- Các hàng có thể có độ dài khác nhau (mảng răng cưa - jagged array)
- Dùng
Arrays.deepToString()để in mảng nhiều chiều đúng định dạng