Java - Multidimenzionalni nizovi


Prije nego što naučimo o višedimenzionalnom nizu, pogledajte lekciju Java nizovi. Višedimenzionalni niz je niz nizova. Svaki element višedimenzionalnog niza je sam niz. Na primjer:

int[ ][ ] a = new int[3][4];

Ovdje smo stvorili višedimenzionalni niz nazvan a. To je dvodimenzionalni niz koji može da sadrži najviše 12 elemenata.


Dvodimenzionalni niz



Zapamtite, Java koristi indeksiranje zasnovano na nuli, odnosno indeksiranje nizova u Java počinje s 0, a ne s 1. Uzmimo još jedan primjer višedimenzionalnog niza. Ovaj put ćemo stvoriti trodimenzionalni niz. Na primjer:

String[ ][ ][ ] data = new String[3][4][2];

Ovdje su podaci 3d niza koji može da sadrži najviše 24 (3 * 4 * 2) elementa tipa String.



Kako inicijalizovati 2d niz u Javi?

Evo kako možemo inicijalizirati dvodimenzionalni niz u Javi.

int[ ][ ] a = {
      {1, 2, 3}, 
      {4, 5, 6, 9}, 
      {7}, 
};

Kao što vidimo, svaki element višedimenzionalnog niza je sam niz. Takođe, za razliku od C/C++, svaki red višedimenzionalnog niza u Javi može biti različite dužine.


Inicijalizacija dvodimenzionalnog niza



Primjer: Dvodimenzionalni niz

class MultidimensionalArray {
    public static void main(String[] args) {

        // kreiranje 2d niza
        int[ ][ ] a = {
            {1, 2, 3}, 
            {4, 5, 6, 9}, 
            {7}, 
        };
      
        // izračunajte dužinu svakog reda
        System.out.println("Dužina reda 1: " + a[0].length);
        System.out.println("Dužina reda 2: " + a[1].length);
        System.out.println("Dužina reda 3: " + a[2].length);
    }
}

U gornjem primjeru kreirali smo višedimenzionalni niz nazvan a. Budući da je svaka komponenta višedimenzionalnog niza takođe niz, elementi (a [0], a [1] i a [2] su takođe nizovi). Ovdje koristimo atribut length za izračunavanje dužine svakog reda.


Primjer: Ispisivanje svih elementa 2d niza pomoću petlje

class MultidimensionalArray {
    public static void main(String[] args) {

        int[ ][ ] a = {
            {1, -2, 3}, 
            {-4, -5, 6, 9}, 
            {7}, 
        };
      
        for (int i = 0; i < a.length; ++i) {
            for(int j = 0; j < a[i].length; ++j) {
                System.out.println(a[i][j]);
            }
        }
    }
}

Takođe možemo koristiti for...each petlju za pristup elementima višedimenzionalnog niza. Na primjer:

class MultidimensionalArray {
    public static void main(String[] args) {

        // kreiranje 2d niza
        int[ ][ ] a = {
            {1, -2, 3}, 
            {-4, -5, 6, 9}, 
            {7}, 
        };
      
        // prvo for...each petlja pristupa pojedinačnom nizu
        // unutar 2d niza
        for (int[] innerArray: a) {
            // druga for...each petlja pristupa svakom elementu unutar reda
            for(int data: innerArray) {
                System.out.println(data);
            }
        }
    }
}

U gornjem primjeru stvorili smo 2d niz nazvan a. Zatim smo koristili for petlji i for...each petlju za pristup svakom elementu niza.



Kako inicijalizovati 3d niz u Javi?

Pogledajmo kako možemo koristiti 3d niz u Javi. Možemo inicijalizovati 3d niz sličan 2d nizu. Na primjer:

// test je 3d (trodimenzionalni) niz
int[ ][ ][ ] test = {
        {
          {1, -2, 3}, 
          {2, 3, 4}
        }, 
        { 
          {-4, -5, 6, 9}, 
          {1}, 
          {2, 3}
        } 
};

U osnovi, 3d niz je skup 2d nizova. Redovi 3d niza takođe se mogu razlikovati u dužini kao u 2d nizu.


Primjer: Trodimenzionalni niz

class ThreeArray {
    public static void main(String[] args) {

        // kreiranje 3d niza
        int[ ][ ][ ] test = {
            {
              {1, -2, 3}, 
              {2, 3, 4}
            }, 
            { 
              {-4, -5, 6, 9}, 
              {1}, 
              {2, 3}
            } 
        };

        // for..each petlja za iteriranje kroz elemente 3d niza
        for (int[ ][ ] array2D: test) {
            for (int[ ] array1D: array2D) {
                for(int item: array1D) {
                    System.out.println(item);
                }
            }
        }
    }
}