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