1. Szaggatott tömbök
Java programozóként nem csak egy kétdimenziós tömb sorait cserélheti fel, hanem tetszőleges tömböt is létrehozhat.
Tegyük fel, hogy azt szeretné, hogy egy kétdimenziós tömb első sorának hossza legyen 10
, a második sorának pedig 50
. Megtehetjük? Igen.
Először is létre kell hoznunk egy „tárolók tárolóját” – ez az első tömb, amely sortömbökre mutató hivatkozásokat fog tárolni. Ez í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:
|
Kétdimenziós tömb A nulladik sor egy elemtömb 10 Az első sor egy 50 elemtömb |
Most hoztunk létre egy úgynevezett " szaggatott tömböt ".
length
És ha most ennek a tömbnek az összes elemét szeretnénk megjeleníteni a képernyőn, akkor jól jön a tömb tulajdonsága: elvégre a tömb sorainak hossza eltérő.
Mellesleg, hogyan találja meg a példánkban a „tárolóedények” hosszát? Ez is egy tömbobjektum, ami azt jelenti, hogy van hossza. A helyes válasz az matrix.length
.
Mi a helyzet a sorainkat tartalmazó tömbökkel?matrix[0].length
2. Munkavégzés kétdimenziós tömbbel
Tegyük fel, hogy egy kétdimenziós tömböt szeretne megjeleníteni. Hogyan csinálod, hogy?
A kódunk valahogy így fog kinézni:
|
Tömb létrehozása Töltse ki a tömböt értékekkel Külső hurok, amely a tömb sorai fölött iterál. Belső hurok, amely egy sor celláin ismétlődik. |
Két egymásba ágyazott hurokra van szüksége. Az elsőt külsőnek , a másodikat belsőnek nevezzük .
A külső ciklusban (a i
változóban) egymás után végigmegyünk a kétdimenziós tömbünket alkotó összes soron (tömbön). Minden egyes értéke i
az adott indexet tartalmazó sornak felel meg.
A belső ciklusban (a j
változóban) a sorok összes celláján áthaladunk. A belső huroknak köszönhetően egy sor jelenik meg a képernyőn, amely egy egydimenziós tömb értékeiből áll.
Ez fog megjelenni:
A tömb egy sora feldolgozásra kerül |
|
A tömb két sora feldolgozásra kerül |
|
A tömb három sora kerül feldolgozásra |
|
3. Többdimenziós tömbök
Még egy érdekes tény a tömbökről, amelyet valószínűleg már kitaláltál. Ha tudsz kétdimenziós tömböt készíteni, akkor lehet háromdimenziós tömböt?
Igen, bármilyen méretű tömböt létrehozhat. 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 a kód túl egyszerű, nem?
Mi van, ha manuálisan hozza létre?
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 még csak a tömb létrehozása! Akkor ezzel is dolgozni kell valahogy.
Bónusz feladat: írjon kódot, amely megjeleníti az összes értéket egy háromdimenziós tömbben.