Multidimenzionalni ArrayList u Javi

1. Pregled

Stvaranje višedimenzionalne ArrayList često se javlja tijekom programiranja. U mnogim slučajevima postoji potreba za stvaranjem dvodimenzionalnih ArrayList ili trodimenzionalni ArrayList.

U ovom uputstvu razgovarat ćemo o tome kako stvoriti višedimenzionalnu ArrayList na Javi.

2. Dvodimenzionalni ArrayList

Pretpostavimo da želimo predstaviti graf s 3 vrha, brojevima 0 do 2. Uz to, pretpostavimo da u grafu postoje 3 brida (0, 1), (1, 2) i (2, 0), gdje vrhova predstavlja rub.

Rubove možemo prikazati u 2-D ArrayList stvaranjem i popunjavanjem ArrayList od ArrayLists.

Prvo, izradimo novu 2-D ArrayList:

int vertexCount = 3; ArrayList graf = novi ArrayList (vertexCount);

Zatim ćemo inicijalizirati svaki element ArrayList s drugom ArrayList:

za (int i = 0; i <vertexCount; i ++) {graph.add (novi ArrayList ()); }

Napokon, u naše 2-D možemo dodati sve rubove (0, 1), (1, 2) i (2, 0) ArrayList:

graph.get (0) .add (1); graph.get (1) .add (2); graph.get (2) .add (0);

Pretpostavimo također da naš graf nije usmjereni graf. Dakle, također moramo dodati rubove (1, 0), (2, 1) i (0, 2), u naše 2-D ArrayList:

graph.get (1) .add (0); graph.get (2) .add (1); graph.get (0) .add (2);

Zatim, za petlju kroz cijeli graf, možemo upotrijebiti double for loop:

int vertexCount = graph.size (); za (int i = 0; i <vertexCount; i ++) {int edgeCount = graph.get (i) .size (); for (int j = 0; j <edgeCount; j ++) {Integer startVertex = i; Cijeli broj endVertex = graph.get (i) .get (j); System.out.printf ("Vertex% d je povezan s vrhom% d% n", startVertex, endVertex); }}

3. Trodimenzionalni ArrayList

U prethodnom smo odjeljku stvorili dvodimenzionalnu ArrayList. Slijedeći istu logiku, stvorimo trodimenzionalnu ArrayList:

Pretpostavimo da želimo predstavljati trodimenzionalni prostor. Dakle, svaka točka u ovom trodimenzionalnom prostoru bit će predstavljena s tri koordinate, recimo, X, Y i Z.

Uz to, zamislimo da će svaka od tih točaka imati boju, bilo crvenu, zelenu, plavu ili žutu. Sada se svaka točka (X, Y, Z) i njena boja mogu predstaviti trodimenzionalno ArrayList.

Radi jednostavnosti, pretpostavimo da stvaramo (2 x 2 x 2) 3-D prostor. Imat će osam bodova: (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0 , 1), (1, 1, 0) i (1, 1, 1).

Ajmo prvo inicijalizirati varijable i 3-D ArrayList:

int x_axis_length = 2; int y_axis_length = 2; int z_axis_length = 2; ArrayList<>> razmak = novi ArrayList (x_axis_length);

Zatim, pokrenimo svaki element ArrayList s ArrayList:

za (int i = 0; i <x_axis_length; i ++) {space.add (novi ArrayList(dužina_osovine)); for (int j = 0; j <y_axis_length; j ++) {space.get (i) .add (new ArrayList (z_axis_length)); }}

Sada točkama u prostoru možemo dodati boje. Dodajmo crvenu boju za točke (0, 0, 0) i (0, 0, 1):

space.get (0) .get (0) .add (0, "Crvena"); space.get (0) .get (0) .add (1, "Crvena");

Zatim, postavimo plavu boju za točke (0, 1, 0) i (0, 1, 1):

space.get (0) .get (1) .add (0, "Blue"); space.get (0) .get (1) .add (1, "Blue");

Slično tome, možemo nastaviti naseljavati točke u prostoru za druge boje.

Imajte na umu da točka s koordinatama (i, j, k) ima podatke o boji pohranjene u sljedećem 3D-u ArrayList element:

space.get (i) .get (j) .get (k) 

Kao što smo vidjeli u ovom primjeru, prostor varijabla je an ArrayList. Također, svaki element ovoga ArrayList je 2-D ArrayList (slično onome što smo vidjeli u odjeljku 2).

Imajte na umu da indeks elemenata u našem prostorArrayList predstavlja X koordinatu, dok svaka 2-D ArrayList, prisutan u tom indeksu, predstavlja koordinate (Y, Z).

4. Zaključak

U ovom smo članku razgovarali o tome kako stvoriti višedimenzionalnu ArrayList na Javi. Vidjeli smo kako možemo prikazati graf pomoću 2-D ArrayList. Štoviše, istražili smo i kako predstaviti 3-D svemirske koordinate pomoću 3-D ArrayList.

Prvi put smo koristili ArrayList od ArrayList, dok smo drugi put koristili ArrayList od 2-D ArrayList. Slično tome, za stvaranje N-dimenzije ArrayList, možemo proširiti isti koncept.

Potpuna implementacija ovog vodiča može se naći na GitHubu.