Java多維陣列


可以在二維陣列中儲存表格資料。在陣列宣告的每個維度的一對括號[]來宣告多維陣列。
例如,如下所示定義int型別的二維陣列:

int[][] table;

這裡,table是一個參照變數,可以儲存對int型別的二維陣列的參照。下面建立具有三行和兩列的int型別二維陣列,如下所示:

table = new int[3][2];

多維陣列中每個維度的索引都是從零開始的。可使用table[rownumber] [columnNumber]存取table陣列的每個元素。行號(rownumber)和列號(columnNumber)始終從0開始。

例如,以下程式碼將一個值 32 分配給表陣列中的第一行和第二列,如圖所示:

table[0][1] = 32;

可以將值1分配給第三行和第一列,如下所示:

table[2][0] = 1;

必須在建立多維陣列時指定至少第一級陣列的維度。例如,

table = new int[3][];

此語句僅建立第一級陣列。此時僅存在table[0]table[1]table[2],它們都是參照 null 值。 table.length的值為3table[0]table[1]table[2]int型別的陣列,也可以將它們賦值為 -

table[0] = new int[2]; // Create two  columns  for row 1 
table[1] = new int[2]; // Create two  columns  for row 2 
table[2] = new int[2]; // Create two  columns  for row 3

Java可以為每行建立一個具有不同列數的二維陣列。這樣的陣列稱為粗糙陣列。

public class Main {
  public static void main(String[] args) {
    // Create a two-dimensional array of 3 rows
    int[][] raggedArray = new int[3][];

    // Add 2 columns to the first row
    raggedArray[0] = new int[2];

    // Add 1 column to the second row
    raggedArray[1] = new int[1];

    // Add 3 columns to the third row
    raggedArray[2] = new int[3];

    // Assign values to all elements of raggedArr
    raggedArray[0][0] = 1;
    raggedArray[0][1] = 2;
    raggedArray[1][0] = 3;
    raggedArray[2][0] = 4;
    raggedArray[2][1] = 5;
    raggedArray[2][2] = 6;

    // Print all elements. One row at one line
    System.out.println(raggedArray[0][0] + "\t" + raggedArray[0][1]);
    System.out.println(raggedArray[1][0]);
    System.out.println(raggedArray[2][0] + "\t" + raggedArray[2][1] + "\t"
        + raggedArray[2][2]);
  }
}

上面的程式碼生成以下結果。

1    2
3
4    5    6

存取多維陣列的元素

通常,使用巢狀for迴圈來填充多維陣列。用於處理多維陣列的for迴圈次數等於陣列中的維數。

以下程式碼顯示了如何存取多維陣列的元素

public class Main {
  public static void main(String[] args) {
    int[][] myArray = new int[3][];
    myArray[0] = new int[2];
    myArray[1] = new int[1];
    myArray[2] = new int[3];

    // Populate the ragged array using for loops
    for (int i = 0; i < myArray.length; i++) {
      for (int j = 0; j < myArray[i].length; j++) {
        myArray[i][j] = i + j;
      }
    }

    // Print the array using for loops
    for (int i = 0; i < myArray.length; i++) {
      for (int j = 0; j < myArray[i].length; j++) {
        System.out.print(myArray[i][j] + "\t");
      }

      // Add a new line after each row is printed
      System.out.println();
    }
  }
}

上面的程式碼生成以下結果。

0    1    
1    
2    3    4

初始化多維陣列

可以在宣告時或在建立時提供值列表來初始化多維陣列中的每個元素。

每個維度的初始值數量將決定陣列中每個維度的長度。級別的值列表用大括號括起來。對於二維陣列,每行的值列表都包含在一對大括號中,如下所示:

int[][] arr = {{10, 20, 30},   
               {1, 2},   
               {2, 3, 4, 5}};

在上面的語句中建立一個具有三行的二維陣列。以下程式碼顯示如何初始化一個二維String型別的陣列:

String[][] acronymlist = {{"A", "a"},
                          {"B", "b"},
                          {"C", "c"}};

可以在建立多維陣列時初始化多維陣列的元素。如下程式碼所示 -

int[][] arr = new int[][]{{1, 2},   {3,4,5}};