Elméleti alapozás
Java-nyelv néhány összetett adattípusa
Tömbök tömbje
Már a kétdimenziós tömb létezése is kiakaszthatta a tisztességes kezdő Java-tanítványt, folytassuk tehát egy hasonló szörnyeteggel, amelyet a tömbök tömbjének nevezünk (array of arrays).
A királyi halmozás voltaképpen arra utal, hogy a királyi tömb további tömböket tartalmaz, amely névhivatkozásokon (referenciákon) keresztül elérhetjük a tárolt tömbök elemeit is.
Az érthetőség kedvéért alapértelmezett adattípusként String típust választottam, mert abba éppúgy bele lehet pakolni neveket, szavakat, kifejezéseket, mint szimpla karaktereket, betűket. Láthatjuk, hogy én az utóbbival operálok, amikor majd a tömbök tartalmára fogok hivatkozni. Először nézzük meg a királyi tömb szabványos deklarációját:
String[][] tombokTombje = new String[][]
{tomb1, tomb2, tomb3};
Ám még ezelőtt kell deklarálnunk a tárolandó tömböket, szintén String típusban, hiszen másként fordítási hibát kapnánk:
String[] tomb1 = new String[]
{"a", "b", "c"};
String[] tomb2 = new String[]
{"d", "e", "f"};
String[] tomb3 = new String[]
{"g", "h", "i"};
String[][] tombokTombje = new String[][]
{tomb1, tomb2, tomb3};
A pontos deklarálások után a tárolt tömbtartalmak közvetlenül is elérhetők, például tombokTombje 0. indexén lévő tomb1 2. eleme c karakter. Ellenőrizzük le ezt az alábbi futtatható Java-kódban:
public class Main {
public static void main(String[] args) {
String[] tomb1 = new String[]
{"a", "b", "c"};
String[] tomb2 = new String[]
{"d", "e", "f"};
String[] tomb3 = new String[]
{"g", "h", "i"};
String[][] tombokTombje = new String[][]
{tomb1, tomb2, tomb3};
System.out.println(tombokTombje[0][2]);
}
}
Végeredmény:
c
Az előző, Kétdimenziós tömb című fejezetben már bevetettük rejtett szuperfegyverünket, az egybeágyazott for ciklusokat a tömbtartalmak teljes listázására. Most sem teszünk másképpen, amely csapásból azt a következtetést is levonhatjuk, hogy a királyi tömböt sem kell különleges, királyi allűrökkel megközelítenünk, mivel őfensége teljesen közönséges kétdimenziós tömbként kezelhető:
public class
Main {
public static void main(String[] args) {
String[] tomb1 = new String[]
{"a", "b", "c"};
String[] tomb2 = new String[]
{"d", "e", "f"};
String[] tomb3 = new String[]
{"g", "h", "i"};
String[][] tombokTombje = new String[][]
{tomb1, tomb2, tomb3};
for (int i = 0; i < tombokTombje.length; i++) {
for (int j = 0; j <
tombokTombje.length; j++) {
System.out.print(tombokTombje[i][j]+ " ");
}
}
}
}
Végeredmény:
a b c d e f g h i