1. Mảng lởm chởm

Là một lập trình viên Java, bạn không chỉ có thể hoán đổi các hàng của một mảng hai chiều mà còn có thể xây dựng một mảng theo bất kỳ cách nào bạn muốn.

Giả sử bạn muốn hàng đầu tiên của mảng hai chiều có độ dài là 10, và bạn muốn độ dài của hàng thứ hai là 50. Chúng ta có thể làm điều đó? Vâng, chúng tôi có thể.

Đầu tiên, chúng ta cần tạo một 'vùng chứa của các vùng chứa'—đây là mảng đầu tiên, sẽ lưu trữ các tham chiếu đến mảng các hàng. Đây là cách mà nó được hoàn thành:

int[][] name = new int[height][];

Bạn chỉ cần bỏ qua chiều thứ hai và máy Java sẽ tạo một thùng chứa các thùng chứa. Đây là những gì sẽ có trong bộ nhớ sau khi thực thi mã này:

Mảng lởm chởm trong Java

Và, bạn đã biết cách tạo mảng một chiều 🙂

Đây là mã kết quả sẽ trông như thế nào:

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
Mảng hai chiều

Hàng thứ 0 là một mảng 10các phần tử
Hàng đầu tiên là một mảng 50các phần tử

Chúng ta vừa tạo một cái gọi là " mảng lởm chởm ".

Và nếu bây giờ chúng ta muốn hiển thị tất cả các phần tử của mảng này trên màn hình, thì lengththuộc tính của mảng sẽ rất hữu ích: xét cho cùng, độ dài của các hàng trong mảng là khác nhau.

Nhân tiện, làm thế nào để bạn tìm thấy độ dài của 'thùng chứa các thùng chứa' trong ví dụ của chúng tôi? Nó cũng là một đối tượng mảng, có nghĩa là nó có độ dài. Câu trả lời đúng là matrix.length.

Còn đối với các mảng bao gồm các hàng của chúng ta thì sao?matrix[0].length



2. Thao tác với mảng hai chiều

Giả sử bạn muốn hiển thị một mảng hai chiều. Làm thế nào để bạn làm điều đó?

Mã của chúng tôi sẽ trông giống như thế này:

int[][] matrix = new int[3][];
matrix[0] = new int[]{1, 2, 3, 4, 5, 6};
matrix[1] = new int[]{1, 2, 3};
matrix[2] = new int[]{1};
for (int i = 0; i < matrix.length; i++) {
   for (int j = 0; j < matrix[i].length; j++)
      System.out.print( matrix[i][j] + " " );
   System.out.println();
}
Tạo một mảng
Điền vào mảng các giá trị


Vòng lặp bên ngoài lặp qua các hàng của mảng.
Vòng lặp bên trong lặp qua các ô của một hàng.

Bạn cần hai vòng lặp lồng nhau. Cái đầu tiên chúng ta gọi là outside , và cái thứ hai - inner .

Trong vòng lặp bên ngoài ( ibiến), chúng ta tuần tự đi qua tất cả các hàng (mảng) tạo nên mảng hai chiều của chúng ta. Mỗi giá trị của itương ứng với một hàng với chỉ số đó.

Trong vòng lặp bên trong ( jbiến), chúng tôi lặp lại tất cả các ô trong các hàng. Nhờ vòng lặp bên trong, một hàng bao gồm các giá trị của mảng một chiều sẽ được hiển thị trên màn hình.

Đây là những gì sẽ được hiển thị:

Một hàng của mảng được xử lý
1 2 3 4 5 6
Hai hàng của mảng được xử lý
1 2 3 4 5 6
1 2 3
Ba hàng của mảng được xử lý
1 2 3 4 5 6
1 2 3
1


3. Mảng nhiều chiều

Thêm một sự thật thú vị nữa về mảng mà có lẽ bạn đã đoán ra. Nếu bạn có thể tạo mảng hai chiều, thì bạn có thể tạo mảng ba chiều không?

Có, bạn có thể tạo một mảng có kích thước bất kỳ. Các mảng như vậy được gọi là 'đa chiều'.

Để giải trí, hãy tạo một mảng đa chiều có 4 chiều.

int[][][][] matrix = new int[2][3][4][5];

Mã này quá đơn giản phải không nào?

Nếu bạn tạo thủ công thì sao?

int[][][][] matrix;
matrix = new int[2][][][];                // Create a 2-element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];                // Create a 3-element array of references to references
  for (j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];             // Create a 4-element array of references
    for (k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];          // Create 5-element arrays of integers
  }
}

Và đó chỉ là tạo mảng! Sau đó, bạn cũng cần phải làm việc với nó bằng cách nào đó.

Nhiệm vụ bổ sung: viết mã hiển thị tất cả các giá trị trong một mảng ba chiều.