"Hello, pelajar saya yang paling bijak!"

"Hello, Rishi!"

"Adakah anda ingin membuat perbincangan baharu tentang tatasusunan? Nah, hari ini kami ada satu untuk anda! Hari ini saya akan memberitahu anda tentang tatasusunan bergerigi dan pelbagai dimensi."

"Bunyinya dahagakan darah dan menakutkan."

"Jangan risau, pengaturcara sebenar sentiasa boleh mengendalikan tatasusunan, walaupun ia menampakkan giginya. Mengetepikan jenaka, kegerikan tatasusunan mencerminkan keupayaan bukan sahaja untuk menukar baris tatasusunan dua dimensi, tetapi juga untuk membina tatasusunan walau bagaimanapun ia perlu.

"Katakan anda mahu baris pertama tatasusunan dua dimensi mempunyai panjang 10, dan yang kedua ialah 50."

"Bolehkah awak melakukannya?"

"Sama sekali! Mula-mula, kami mencipta 'bekas bekas' — ini ialah tatasusunan pertama, yang akan menyimpan rujukan kepada tatasusunan baris. Beginilah caranya:

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

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

"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 tatasusunan yang dipanggil "bergerigi" . Tepinya kasar dan tidak teratur.

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

"Dengan cara ini, bolehkah anda memberitahu saya bagaimana untuk mencari panjang 'bekas bekas' dalam contoh kami? Ia juga merupakan objek tatasusunan, yang bermaksud ia mempunyai panjang."

"Mungkin matrix.length?"

"Betul! Dan untuk tatasusunan yang membentuk baris, kami akan gunakan matrix[0].lengthuntuk baris sifar."

"Dan untuk yang pertama, ini bermakna kita akan menggunakan matrix[1].length?"

"Betul. Dalam kes pertama, pelaksanaan arahan akan menghasilkan 10, dan dalam kes kedua, hasilnya akan menjadi 50.

Bekerja dengan tatasusunan dua dimensi

"Sekarang mari kita cuba memaparkan tatasusunan dua dimensi:

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


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

"Seperti yang anda lihat, kita memerlukan dua gelung bersarang. Yang pertama kita panggil luar, dan yang kedua — dalam .

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

"Dalam gelung dalam ( jpembolehubah), kami mengulangi 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

Tatasusunan berbilang dimensi

"Amigo! Adakah anda meneka bahawa jika terdapat tatasusunan dua dimensi, maka terdapat juga tiga dimensi?

“Saya hanya memikirkan tentang itu, tetapi malu untuk bertanya.

"Ya, anda boleh mencipta tatasusunan tiga dimensi, dan secara umum, tatasusunan mana-mana dimensi. Tatasusunan sedemikian dipanggil 'berbilang dimensi'. Hanya untuk keseronokan, mari buat tatasusunan berbilang dimensi yang mempunyai 4 dimensi.

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

"Itu nampaknya tidak begitu sukar!"

"Anda belum cuba menciptanya secara manual lagi! Di sini, nikmatilah perkara ini:

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."

"Saya tarik balik apa yang saya katakan. Ia tidak begitu mudah untuk bekerja dengan mereka. Tetapi ia mungkin."

"Memandangkan ia mungkin, inilah tugas bonus. Tulis kod yang memaparkan semua nilai dalam tatasusunan tiga dimensi. Anda cukup tahu untuk melakukan ini. Perkara utama ialah bersabar dan prihatin. Atau mungkin bijak (ada sedikit rahsia pengetahuan yang akan membantu anda menyelesaikan tugasan ini dalam satu baris). Tetapi tidak kira bagaimana anda menyelesaikannya, selesaikannya."

"Terima kasih, Rishi. Saya akan cuba."