“你好,我最聰明的學生!”

“你好,瑞希!”

“你是否渴望關於數組的新討論?好吧,今天我們為你準備了一個!今天我要告訴你關於鋸齒狀數組和多維數組。”

“聽起來嗜血又可怕。”

“別擔心,一個真正的程序員總是可以處理數組,即使它露出牙齒。開個玩笑,數組的鋸齒反映了不僅可以交換二維數組的行,還可以構造數組的能力然而它必須如此。

“假設您希望二維數組的第一行長度為 10,第二行長度為 50。”

“你真的可以嗎?”

“當然!首先,我們創建一個‘容器的容器’——這是第一個數組,它將存儲對行數組的引用。這是如何完成的:

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

“您只需省略第二個維度,Java 機器就會創建一個容器容器。這就是執行此代碼後內存中的內容:

“而且,你已經知道如何創建一維數組 🙂

這就是生成的代碼的樣子:

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
二維數組

第零行是一個10元素數組
第一行是一個50元素數組

“我們剛剛創建了一個所謂的“鋸齒狀”陣列。它的邊緣粗糙且不規則。

“而如果我們現在想在屏幕上顯示這個數組的所有元素,那麼數組的length數組就派上用場了:畢竟數組的行的長度是不同的。

“對了,你能告訴我如何在我們的示例中找到'container of containers'的長度嗎?它也是一個數組對象,這意味著它有一個長度。”

“大概吧matrix.length?”

“完全正確!對於形成行的數組,我們將用於matrix[0].length第零行。”

“首先,這意味著我們會使用matrix[1].length?”

“非常正確,在第一種情況下,執行命令會產生10,而在第二種情況下,結果將是50。

使用二維數組

“現在讓我們嘗試顯示一個二維數組:

int[][] matrix = new int[3][];
matrix[0] = {1, 2, 3, 4, 5, 6};
matrix[1] = {1, 2, 3};
matrix[2] = {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();
}
創建數組
用值填充數組


迭代數組行的外循環。
迭代單行單元格的內部循環。

“如您所見,我們需要兩個嵌套循環。第一個我們稱為 outer,第二個稱為inner

“在外部循環(i變量)中,我們依次遍歷構成二維數組的所有行(數組)。每個值對應i於具有該索引的行。

“在內部循環(j變量)中,我們遍歷行中的所有單元格。由於內部循環,由一個一維數組的值組成的一行將顯示在屏幕上。

“這是將要顯示的內容:

數組的一行被處理 1 2 3 4 5 6
處理數組的兩行 1 2 3 4 5 6
1 2 3
處理數組的三行 1 2 3 4 5 6
1 2 3
1

多維數組

“朋友!你有沒有猜到,如果有二維的陣法,那麼也可以有三維的?

“我只是在想這個,但不好意思問。

“是的,你可以創建一個三維數組,一般來說,任何維度的數組。這樣的數組被稱為‘多維’。為了好玩,讓我們創建一個有 4 個維度的多維數組。

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

“這似乎不是很難!”

“您還沒有嘗試手動創建一個!在這裡,讓您大飽眼福:

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
  }
}

“這只是創建一個數組!然後你還需要以某種方式使用它。”

“我收回我說過的話。與他們合作並不容易。但這是可能的。”

“既然有可能,這裡有一個額外的任務。編寫代碼來顯示三維數組中的所有值。你知道的足夠多了。最主要的是要有耐心和細心。或者可能是足智多謀(有一個秘密位將幫助您在一行中解決此任務的知識)。但無論您如何解決它,請解決它。”

“謝謝你,Rishi。我會試試的。”