"Merhaba, en zeki öğrencim!"

"Merhaba Rishi!"

"Diziler hakkında yeni bir tartışma için can atıyor musunuz? Pekala, bugün sizin için bir tartışmamız var! Bugün size pürüzlü ve çok boyutlu dizilerden bahsedeceğim."

"Kulağa susamış ve korkutucu geliyor."

"Endişelenmeyin, gerçek bir programcı bir diziyi, dişlerini gösterse bile her zaman işleyebilir. Şaka bir yana, bir dizinin pürüzlülüğü, yalnızca iki boyutlu bir dizinin satırlarını değiştirme yeteneğini değil, aynı zamanda bir dizi oluşturma becerisini de yansıtır. ancak olması gerekiyor.

"Diyelim ki iki boyutlu bir dizinin ilk satırının 10, ikinci satırının 50 olmasını istiyorsunuz."

"Bunu gerçekten yapabilir misin?"

"Kesinlikle! İlk olarak, bir 'konteyner kabı' yaratıyoruz - bu, satır dizilerine referansları depolayacak ilk dizidir. Şu şekilde yapılır:

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

" İkinci boyutu atlıyorsunuz ve Java makinesi bir kapsayıcı kapsayıcısı oluşturuyor. Bu kodu çalıştırdıktan sonra bellekte şu olacak:

"Ve, sen zaten tek boyutlu dizilerin nasıl yaratılacağını biliyorsun 🙂

Ortaya çıkan kod şöyle görünecek:

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
İki boyutlu dizi Sıfırıncı sıra bir eleman

dizisidir İlk sıra bir eleman dizisidir10
50

"Az önce "tırtıklı" bir dizi oluşturduk . Kenarları pürüzlü ve düzensiz.

"Ve şimdi bu dizinin tüm öğelerini ekranda görüntülemek istiyorsak, dizinin lengthdizisi kullanışlı olacaktır: sonuçta dizinin satırlarının uzunlukları farklıdır.

"Bu arada, örneğimizde bir 'konteyner kabının' uzunluğunu nasıl bulacağımı söyleyebilir misiniz? Aynı zamanda bir dizi nesnesidir, yani bir uzunluğu vardır."

"Muhtemelen matrix.length?"

matrix[0].length"Çok doğru! Ve sıraları oluşturan diziler için sıfırıncı sırayı kullanırdık ."

"Ve ilk olarak, bu, kullanacağımız anlamına mı geliyor matrix[1].length?"

"Doğru. İlk durumda, komutun yürütülmesi 10, ikinci durumda sonuç 50 olacaktır.

İki boyutlu bir diziyle çalışma

"Şimdi iki boyutlu bir diziyi görüntülemeye çalışalım:

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();
}
Bir dizi oluşturun
Diziyi değerlerle doldurun


Dizinin satırları üzerinde yinelenen dış döngü.
Tek bir sıranın hücreleri üzerinde yinelenen iç döngü.

"Gördüğünüz gibi, iç içe geçmiş iki döngüye ihtiyacımız var. Birincisine outer, ikincisine de inner diyoruz .

"Dış döngüde (değişken i), iki boyutlu dizimizi oluşturan tüm satırları (dizileri) sırayla gözden geçiriyoruz. 'nin her değeri, io dizine sahip bir satıra karşılık gelir.

"İç döngüde ( jdeğişken) satırlardaki tüm hücreleri yineliyoruz. İç döngü sayesinde ekranda tek boyutlu bir dizinin değerlerinden oluşan bir satır görüntülenecek.

"Gösterilecek olan şudur:

Dizinin bir satırı işlenir 1 2 3 4 5 6
Dizinin iki satırı işlenir 1 2 3 4 5 6
1 2 3
Dizinin üç satırı işlenir 1 2 3 4 5 6
1 2 3
1

çok boyutlu diziler

"Amigo! İki boyutlu diziler varsa, üç boyutlu dizilerin de olabileceğini tahmin ettiniz mi?

"Ben de bunu düşünüyordum ama sormaya utandım.

"Evet, üç boyutlu bir dizi ve genel olarak herhangi bir boyutta bir dizi oluşturabilirsiniz. Bu tür dizilere 'çok boyutlu' denir. Sadece eğlence için, 4 boyutlu çok boyutlu bir dizi oluşturalım.

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

"Bu çok zor görünmüyor!"

"Henüz manuel olarak bir tane oluşturmayı denemediniz! İşte, gözlerinizi bununla ziyafet çekin:

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

"Ve bu sadece bir dizi yaratmak! O zaman bir şekilde onunla da çalışmalısın."

"Söylediklerimi geri alıyorum. Onlarla çalışmak o kadar kolay değil. Ama mümkün."

"Mümkün olduğuna göre, işte size bir bonus görev. Tüm değerleri üç boyutlu bir dizide gösteren bir kod yazın. Bunu yapmak için yeterince bilginiz var. Asıl mesele sabırlı ve dikkatli olmak. Ya da belki becerikli olmak (bir sırrı var) tek satırda bu görevi çözmenize yardımcı olacak ilim) Ama nasıl çözerseniz çözün, çözün.”

"Teşekkürler Rishi. Deneyeceğim."