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

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

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ő:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

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