– Helló, legokosabb tanítványom!

– Szia, Rishi!

"Szeretsz egy új beszélgetést a tömbökről? Nos, ma van neked egy! Ma a csipkézett és többdimenziós tömbökről fogok mesélni."

– Vérszomjasan és ijesztően hangzik.

"Ne aggódj, egy igazi programozó mindig tud kezelni egy tömböt, még akkor is, ha a fogai láthatóak. Viccet félretéve, egy tömb egyenetlensége azt tükrözi, hogy nem csak egy kétdimenziós tömb sorait lehet felcserélni, hanem tömböt is létrehozhat. ennek azonban lennie kell.

"Tegyük fel, hogy azt szeretné, ha egy kétdimenziós tömb első sora 10, a második pedig 50 legyen."

– Tényleg meg tudod csinálni?

"Mindenképpen! Először létrehozunk egy "tárolók tárolóját" – ez az első tömb, amely a sorok tömbjére való hivatkozásokat tárolja. Így történik:

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

"Egyszerűen kihagyja a második dimenziót , és a Java gép létrehoz egy konténereket. Ez lesz a memóriában a kód végrehajtása után:

"És hát, már tudja, hogyan kell egydimenziós tömböket létrehozni 🙂

Így fog kinézni a kapott kód:

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
Kétdimenziós tömb

A nulladik sor egy elemtömb 10Az
első sor egy 50elemtömb

"Nemrég hoztunk létre egy úgynevezett "szaggatott" tömböt, amelynek élei durvák és szabálytalanok.

"És ha most ennek a tömbnek az összes elemét meg akarjuk jeleníteni a képernyőn, akkor a tömb tömbje lengthjól jön: elvégre a tömb sorainak hossza eltérő.

"Mellesleg, meg tudná mondani, hogyan találhatom meg a példánkban a "tárolók tárolójának" hosszát? Ez is egy tömbobjektum, ami azt jelenti, hogy van hossza."

– Valószínűleg matrix.length?

"Teljesen helyes! És a sorokat alkotó tömböknél matrix[0].lengtha nulladik sort használnánk."

– És először is, ez azt jelenti, hogy használnánk matrix[1].length?

"Teljesen helyes. Az első esetben a parancs végrehajtása 10-et ad, a második esetben pedig 50-et.

Munkavégzés kétdimenziós tömbbel

"Most próbáljunk meg egy kétdimenziós tömböt megjeleníteni:

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();
}
Tömb létrehozása
Töltse ki a tömböt értékekkel


Külső hurok, amely a tömb sorain iterál.
Belső hurok, amely egy sor celláin ismétlődik.

"Amint látja, két egymásba ágyazott hurokra van szükségünk. Az elsőt külsőnek, a másodikat pedig belsőnek hívjuk .

"A külső hurokban (a iváltozóban) egymás után végigmegyünk a kétdimenziós tömböt alkotó összes sort (tömböt) i.

"A belső ciklusban (a jváltozóban) a sorok összes celláját iteráljuk. A belső ciklusnak köszönhetően a képernyőn megjelenik egy sor, amely egy egydimenziós tömb értékeiből áll.

"Ez fog megjelenni:

A tömb egyik sora feldolgozásra kerül 1 2 3 4 5 6
A tömb két sora kerül feldolgozásra 1 2 3 4 5 6
1 2 3
A tömb három sora kerül feldolgozásra 1 2 3 4 5 6
1 2 3
1

Többdimenziós tömbök

"Amigo! Gondoltad volna, hogy ha vannak kétdimenziós tömbök, akkor lehetnek háromdimenziósak is?

„Csak ezen gondolkodtam, de szégyelltem megkérdezni.

"Igen, létrehozhat egy háromdimenziós tömböt, és általában bármilyen dimenziójú tömböt. Az ilyen tömböket "többdimenziósnak" nevezik. Csak a móka kedvéért hozzunk létre egy többdimenziós tömböt, amelynek 4 dimenziója van.

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

– Ez nem tűnik túl nehéznek!

"Még nem próbált meg manuálisan létrehozni egyet! Gyönyörködjön ezen:

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

"És ez csak egy tömb létrehozása! Akkor ezzel is dolgozni kell valahogy."

"Visszavonom, amit mondtam. Nem olyan egyszerű velük dolgozni. De lehetséges."

"Mivel lehetséges, itt van egy bónusz feladat. Írj olyan kódot, amely az összes értéket egy háromdimenziós tömbben jeleníti meg. Eleget tudsz ehhez. A lényeg az, hogy légy türelmes és figyelmes. Vagy talán leleményes (van egy titok olyan tudást, amely egyetlen sorban segít megoldani ezt a feladatot). De nem számít, hogyan oldja meg, oldja meg."

"Köszönöm, Rishi. Megpróbálom."