Mục lục
Mảng đa chiều có thể định nghĩa đơn giản là mảng của mảng, dữ liệu bên trong một phần tử của mảng là một mảng.
data_type[1st dimension][2nd dimension][]..[Nth dimension] array_name = new data_type[size1][size2]….[sizeN];
Chú thích:
- data_type: Kiểu dữ liệu của mảng, ví dụ int, char, double etc.
- dimension: Kích thước của mảng
- array_name: Tên mảng
- size1, size2, …, sizeN: Kích thước mảng tương ứng (1st dimension – size1, 2st dimension] – size 2 etc)
Ví dụ
Mảng 2 chiều int[][] twoD_arr = new int[10][20]; Mảng 3 chiều int[][][] threeD_arr = new int[10][20][30];
Đối với mảng 2 chiều twoD_arr, là một mảng 10 phần tử, với mỗi phần tử là một mảng gồm 20 phần tử.
Đối với mảng 3 chiều threeD_arr, là 1 mảng 10 phần tử, mỗi phần tử là một mảng 20 phần tử, trong 20 phần tử này mỗi phần tử lại là một mảng 30 phần tử.
Cách tính số phần tử trong mảng đa chiều
Tổng số phần tử được lưu trong mảng đa chiều được tính bằng tích kích thước của tửng mảng bên trong mảng đa chiều. Ví dụ
twoD_arr[10][20] -> kích thước là 10 * 20 = 200
threeD_arr[10][20][30] -> kích thước là 10 * 20 *30 = 6000
Mảng 2 chiều trong java
Mảng 2 chiều là 1 cấu trúc được sử dụng nhiều và có cấu trúc đơn giản nhất trong mảng đa chiều. Nó có thể gọi đơn giản là mảng của mảng.
Khởi tạo mảng 2 chiều
Khởi tạo mảng 2 chiều theo cú gián tiếp pháp sau:
data_type[][] array_name = new data_type[x][y]; Ví dụ: int[][] arr = new int[10][20]
Trong đó
- data_type: Kiểu dữ liệu của mảng, ví dụ int, char, double etc.
- array_name: Tên mảng
- x: Kích thước mảng 2 chiều
- y: Kích thước mảng của mỗi phần tử trong mảng 2 chiều.
Gán giá trị cho 1 phần tử cụ thể trong mảng 2 chiều
array_name[row_index][column_index] = value; For example: arr[0][0] = 1;
Ví dụ
class GFG { public static void main(String[] args) { int[][] arr = new int[10][20]; arr[0][0] = 1; System.out.println("arr[0][0] = " + arr[0][0]); } }
Output: arr[0][0] = 1
Ngoài ra chúng ta có thể khởi tạo mảng và trực tiếp giá trị cho từng phần tử trong mảng 2 chiều như sau
data_type[][] array_name = { {valueR1C1, valueR1C2, ....}, {valueR2C1, valueR2C2, ....} }; Ví dụ: int[][] arr = {{1, 2}, {3, 4}};
Truy xuất ngẫu nhiên trong mảng 2 chiều
Để truy xuất ngẫu nhiên một phần tử trong mảng 2 chiều sử dụng cú pháp
namearr[i][j]
i: tương ứng chỉ số của dòng, j là chỉ số của cột trong mảng 2 chiều.
class GFG { public static void main(String[] args) { int[][] arr = { { 1, 2 }, { 3, 4 } }; for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) System.out.println("arr[" + i + "][" + j + "] = " + arr[i][j]); } }
Output:
arr[0][0] = 1
arr[0][1] = 2
arr[1][0] = 3
arr[1][1] = 4
Mảng 3 chiều trong java
Mảng 3 chiều là 1 cấu trúc có cấu trúc phức tạp trong mảng đa chiều. Nó có thể gọi đơn giản là mảng của mảng 2 chiều, nghĩa là mỗi phần tử trong mảng 3 chiều là một mảng 2 chiều.
Khởi tạo mảng 3 chiều
Khởi tạo mảng 3 chiều theo cú pháp sau:
data_type[][][] array_name = new data_type[x][y][z]; Ví dụ: int[][][] arr = new int[10][20][30];
array_name[array_index][row_index][column_index] = value; Ví dụ: arr[0][0][0] = 1;
class GFG { public static void main(String[] args) { int[][][] arr = new int[10][20][30]; arr[0][0][0] = 1; System.out.println("arr[0][0][0] = " + arr[0][0][0]); } }
Output: arr[0][0][0] = 1
Ngoài ra chúng ta có thể khởi tạo mảng và trực tiếp giá trị cho từng phần tử trong mảng 3 chiều như sau
data_type[][][] array_name = { { {valueA1R1C1, valueA1R1C2, ....}, {valueA1R2C1, valueA1R2C2, ....} }, { {valueA2R1C1, valueA2R1C2, ....}, {valueA2R2C1, valueA2R2C2, ....} } }; For example: int[][][] arr = { {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}} };
Truy xuất phần tử ngẫu nhiên trong mảng 3 chiều
Để truy xuất ngẫu nhiên một phần tử trong mảng 2 chiều sử dụng cú pháp
x[array_index][row_index][column_index]
Trong đó:
- array_index: Chỉ số phần tử trong mảng 3 chiều
- row_index: Chỉ số dòng mảng 2 chiều của phần tử tại array_index.
- col_index: Chỉ số cột mảng 2 chiều của phần tử tại array_index.
In tất cả các phần tử của mảng 3 chiều
class GFG { public static void main(String[] args) { int[][][] arr = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { for (int k = 0; k < 2; k++) { System.out.print(arr[i][j][k] + " "); } System.out.println(); } System.out.println(); } } }
Output:
1 2
3 45 6
7 8
Tóm lược
Như vậy chúng ta đã hiểu xong về mảng đa chiều trong java, thực thế thì mình chỉ sử dụng nhiều mảng 2 chiều thôi, nó cũng đã khá nhức đầu rồi. Mảng 3 chiều thì mình chưa hoặc có lẽ là ko bao giờ cần dùng, nếu các bạn có thể tìm hiểu thêm, theo mình tìm hiểu thì nó được dùng trong lập trình game bla bla.
Nguồn tham khảo:
https://www.geeksforgeeks.org/multidimensional-arrays-in-java/