Mảng 3D trở lên
Thuộc phần Logic và luồng chương trình trong hành trình Java của Coddy. Bài học 7 trên 59.
Tương tự như cách bạn có thể tạo mảng 2D (mảng gồm các mảng), bạn cũng có thể tạo mảng 3D (mảng gồm các mảng gồm các mảng), mảng 4D, v.v. Chúng được gọi là mảng đa chiều.
Bạn có thể hình dung mảng 3D như một tập hợp các mảng 2D xếp chồng lên nhau, tạo thành một cấu trúc dạng khối lập phương. Bạn truy cập từng phần tử trong mảng 3D bằng ba chỉ số: một chỉ số xác định độ sâu (mảng 2D nào), một chỉ số xác định hàng và một chỉ số xác định cột.
Đây là cách khai báo và khởi tạo một mảng 3D (array) trong Java:
data_type[][][] array_name = new data_type[depth][rows][columns];data_type: Kiểu dữ liệu của các phần tử mà mảng sẽ chứa.array_name: Tên của mảng.
depth: Số lượng mảng 2D (độ sâu).rows: Số hàng trong mỗi mảng 2D.columns: Số cột trong mỗi mảng 2D.
Ví dụ, để tạo một mảng 3D gồm các số nguyên có kích thước 2x3x4, bạn viết:
int[][][] cube = new int[2][3][4];Bạn cũng có thể khởi tạo trực tiếp một mảng 3D:
int[][][] cube = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};Thử thách
DễViết một chương trình nhận ba đối số số nguyên: depth, rows và cols. Chương trình sẽ tạo một mảng 3D gồm các số nguyên với kích thước đã chỉ định và khởi tạo mỗi phần tử của mảng bằng tích của chỉ số độ sâu, hàng và cột tương ứng (bắt đầu từ 1).
Ví dụ, phần tử tại [d][r][c] sẽ có giá trị (d + 1) * (r + 1) * (c + 1).
Cuối cùng, in mảng 3D thu được ra bảng điều khiển bằng các vòng lặp lồng nhau. Đầu ra sẽ trông như sau:
Depth 0:
1 2 3 4
2 4 6 8
3 6 9 12
Depth 1:
2 4 6 8
4 8 12 16
6 12 18 24Tự làm thử
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int depth = scanner.nextInt();
int rows = scanner.nextInt();
int cols = scanner.nextInt();
int[][][] array3D = new int[depth][rows][cols];
// Viết code của bạn bên dưới
// In mảng 3D ra
for (int d = 0; d < depth; d++) {
System.out.println("Depth " + d + ":");
for (int r = 0; r < rows; r++) {
for (int c = 0; c < cols; c++) {
System.out.print(array3D[d][r][c] + " ");
}
System.out.println();
}
}
}
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
1Mảng đa chiều
Kiến thức cơ bản về mảng 2DTruy cập phần tử trong mảng 2DVòng lặp lồng nhau với mảng 2DÔn tập về mảng 2DPhép cộng và phép trừ ma trậnMảng không đềuMảng 3D trở lênCác mẫu thường gặp với mảng 2DÔn tập về mảng2HashMap phần 1
HashMap là gì?Khai báo HashMapTruy cập giá trịKiểm tra khóa có tồn tạiChỉnh sửa từ điểnÔn tập: HashMapTự luyện tập: Trình biên dịch Java online