Elméleti alapozás

Java-nyelv néhány összetett adattípusa

 

Kétdimenziós tömb

 

Az előző fejezet bevezetőjében több dimenziós tömb lehetőségéről is szó esett. Mit is jelent ez?

 

Alapértelmezésben egy egyszerű tömb 1 dimenziós kiterjedésű, azaz egyetlen "oszlopnyi" (más értelmezésben sornyi) adattárolást tartalmaz, de van lehetőség van 2 (vagy 3) dimenziós tömbök létrehozására is, ekkor már (a 2 dimenziós esetben) egy Excel-táblához hasonlóan sorokról és oszlopokról beszélhetünk. Az alábbi ábra bal oldalán egy 1 dimenziós (1x6), jobb oldalon pedig egy 2 dimenziós tömb elvi rajzát láthatjuk (2x6):

 

www.informatika-programozas.hu

 

De mi értelme a 2 dimenziós tömbnek?

Gondoljunk csak a Full HD (BT. 709) képmegjelenítő szabványra, amely a tűéles képalkotáshoz 1080x920 képpontot definiál. Ha tehát adott egy ilyen terjedelmű 2 dimenziós tömb, amelynek elemeit RGB-színkoordinátákkal töltjük fel, akkor (elméletileg) képesek vagyunk egy ekkora felbontású kép információinak tárolására. Ekkor már egy mátrixot határoztunk meg, amely a számítógépes grafika egyik legfontosabb matematikai alkotóeleme.

 

saját típus[][] tombFHD = new saját típus[1080][920];

 

(A deklaráció csak elméleti megközelítés, ezért nem adtam meg Java-specifikus tömbtípust.)

 

Most hozzunk létre és 1, 2, 3, 4 értékekkel rögtön inicializáljunk egy 4 elemű, int típusú 2 dimenziós tömböt!

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int ketdimenziosTomb[][] = new int[2][2];
    ketdimenziosTomb[0][0] = 1;
    ketdimenziosTomb[0][1] = 2;
    ketdimenziosTomb[1][0] = 3;
    ketdimenziosTomb[1][1] = 4;
    for (int i = 0; i < ketdimenziosTomb.length; i++) {
        for (int j = 0; j < ketdimenziosTomb.length; j++) {
            System.out.print(ketdimenziosTomb[i][j]+ " ");
            }
        }
    }
}

 

Végeredmény:

1 2 3 4

 

A 2 fenti inicializálás valójában "kézi" volt, mert a tömbelemeket egyesével adtuk meg. A for ciklus használatával az inicializálás automatizálható (legalábbis sok esetben):

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int ketdimenziosTomb[][] = new int[2][2];
    int szamlalo = 1;
    for (int i = 0; i < ketdimenziosTomb.length; i++) {
        for (int j = 0; j < ketdimenziosTomb.length; j++) {
            ketdimenziosTomb[i][j] = szamlalo;
            System.out.print(ketdimenziosTomb[i][j] + " ");
            szamlalo++;
            }
        }
    }
}
 

Végeredmény:

1 2 3 4

 

Természetesen az inicializálást többféle adattípussal is megtehetjük. Alább például egy String típusú és "kézi" inicializálást tanulmányozhatunk, még pedig kétféle módon:

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    String ketdimenziosTomb[][] = new String[2][2];
    ketdimenziosTomb[0][0] = "A";
    ketdimenziosTomb[0][1] = "B";
    ketdimenziosTomb[1][0] = "C";
    ketdimenziosTomb[1][1] = "D";
    for (int i = 0; i < ketdimenziosTomb.length; i++) {
        for (int j = 0; j < ketdimenziosTomb.length; j++) {
            System.out.print(ketdimenziosTomb[i][j] + " ");
            }
        }
    }
}
 

Végeredmény:

A B C D

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    String ketdimenziosTomb[][] = new String[][]{{"A","B"},{"C","D"}};
    for (int i = 0; i < ketdimenziosTomb.length; i++) {
        for (int j = 0; j < ketdimenziosTomb.length; j++) {
            System.out.print(ketdimenziosTomb[i][j] + " ");
            }
        }
    }
}
 

Végeredmény:

A B C D

 

A kétdimenziós tömb egy speciális esete az úgynevezett aszimmetrikus kétdimenziós tömb, amelynek oszlop-, vagy sorszámai különbözők. Az ilyen jellegű tömbműveletkor azonban ügyelnünk kell arra, hogy lekezeljük a különböző dimenzióhosszakat is (az alábbi példában: ketdimenziosTomb[i].length):

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    String ketdimenziosTomb[][] = new String[][]{
        {"1", "2"},
        {"3", "4", "5"},
    };
    for (int i = 0; i < ketdimenziosTomb.length; i++) {
        for (int j = 0; j < ketdimenziosTomb[i].length; j++) {
            System.out.print(ketdimenziosTomb[i][j] + " ");
            }
        }
    }
}
 

Végeredmény:

1 2 3 4 5

 

A kétdimenziós tömbökről (másik nevükön mátrix) részletesen szó esik még a Műveletek mátrixban című fejezetben.