1. Tatasusunan bergerigi

Sebagai pengaturcara Java, anda bukan sahaja boleh menukar baris tatasusunan dua dimensi, tetapi juga membina tatasusunan mengikut cara yang anda mahukan.

Katakan anda mahu baris pertama tatasusunan dua dimensi mempunyai panjang 10, dan anda mahu panjang baris kedua ialah 50. Bolehkah kita berbuat demikian? Ya kita boleh.

Mula-mula, kita perlu mencipta 'bekas bekas' — ini ialah tatasusunan pertama, yang akan menyimpan rujukan kepada tatasusunan baris. Ini adalah cara ia dilakukan:

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

Anda hanya tinggalkan dimensi kedua , dan mesin Java mencipta bekas bekas. Inilah yang akan ada dalam ingatan selepas melaksanakan kod ini:

Tatasusunan bergerigi di Jawa

Dan, anda sudah tahu cara membuat tatasusunan satu dimensi 🙂

Inilah rupa kod yang terhasil:

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
Tatasusunan dua dimensi

Baris sifar ialah tatasusunan 10elemen
Baris pertama ialah tatasusunan 50elemen

Kami baru sahaja mencipta apa yang dipanggil " tatasusunan bergerigi ".

Dan jika kita kini mahu memaparkan semua elemen tatasusunan ini pada skrin, maka sifat tatasusunan lengthakan berguna: lagipun, panjang baris tatasusunan adalah berbeza.

Dengan cara ini, bagaimana anda mencari panjang 'bekas bekas' dalam contoh kami? Ia juga merupakan objek tatasusunan, yang bermaksud ia mempunyai panjang. Jawapan yang betul ialah matrix.length.

Bagaimana pula dengan tatasusunan yang terdiri daripada baris kami?matrix[0].length



2. Bekerja dengan tatasusunan dua dimensi

Katakan anda ingin memaparkan tatasusunan dua dimensi. Bagaimana anda melakukannya?

Kod kami akan kelihatan seperti ini:

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();
}
Cipta tatasusunan
Isi tatasusunan dengan nilai


Gelung luar yang lelaran pada baris tatasusunan.
Gelung dalaman yang berulang ke atas sel satu baris.

Anda memerlukan dua gelung bersarang. Yang pertama kita panggil outer , dan yang kedua — inner .

Dalam gelung luar ( ipembolehubah), kami secara berurutan melalui semua baris (tatasusunan) yang membentuk tatasusunan dua dimensi kami. Setiap nilai isepadan dengan baris dengan indeks itu.

Dalam gelung dalam ( jpembolehubah), kami melelang ke atas semua sel dalam baris. Terima kasih kepada gelung dalam, satu baris, yang terdiri daripada nilai tatasusunan satu dimensi, akan dipaparkan pada skrin.

Inilah yang akan dipaparkan:

Satu baris tatasusunan diproses
1 2 3 4 5 6
Dua baris tatasusunan diproses
1 2 3 4 5 6
1 2 3
Tiga baris tatasusunan diproses
1 2 3 4 5 6
1 2 3
1


3. Tatasusunan berbilang dimensi

Satu lagi fakta menarik tentang tatasusunan, satu fakta yang anda mungkin sudah meneka. Jika anda boleh membuat tatasusunan dua dimensi, maka bolehkah anda membuat tatasusunan tiga dimensi?

Ya, anda boleh membuat tatasusunan mana-mana dimensi. Tatasusunan sedemikian dipanggil 'multidimensi'.

Hanya untuk keseronokan, mari buat tatasusunan berbilang dimensi yang mempunyai 4 dimensi.

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

Kod ini terlalu mudah, bukan?

Bagaimana jika anda menciptanya secara manual?

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

Dan itu hanya mencipta tatasusunan! Kemudian anda juga perlu bekerja dengannya entah bagaimana.

Tugas bonus: tulis kod yang memaparkan semua nilai dalam tatasusunan tiga dimensi.