Multi-dimensionel ArrayList i Java

1. Oversigt

Oprettelse af en flerdimensionel ArrayList kommer ofte op under programmering. I mange tilfælde er der behov for at skabe en todimensional ArrayList eller en tredimensionel ArrayList.

I denne vejledning diskuterer vi, hvordan du opretter en flerdimensionel ArrayList i Java.

2. To-dimensionelle ArrayList

Antag, at vi vil repræsentere en graf med 3 hjørner, nummereret 0 til 2. Lad os desuden antage, at der er 3 kanter i grafen (0, 1), (1, 2) og (2, 0), hvor et par af hjørner repræsenterer en kant.

Vi kan repræsentere kanterne i en 2-D ArrayList ved at oprette og udfylde en ArrayList af ArrayLists.

Lad os først oprette en ny 2-D ArrayList:

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

Dernæst initialiserer vi hvert element af ArrayList med en anden ArrayList:

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

Endelig kan vi tilføje alle kanterne (0, 1), (1, 2) og (2, 0) til vores 2-D ArrayList:

graph.get (0). tilføj (1); graf.get (1). tilføj (2); graph.get (2) .add (0);

Lad os også antage, at vores graf ikke er en rettet graf. Så vi skal også tilføje kanterne (1, 0), (2, 1) og (0, 2) til vores 2-D ArrayList:

graph.get (1) .add (0); graf.get (2). tilføj (1); graph.get (0) .add (2);

For at løkke gennem hele grafen kan vi derefter bruge en dobbelt til løkke:

int vertexCount = graph.size (); for (int i = 0; i <vertexCount; i ++) {int edgeCount = graph.get (i) .størrelse (); for (int j = 0; j <edgeCount; j ++) {Heltal startVertex = i; Heltal endVertex = graph.get (i) .get (j); System.out.printf ("Vertex% d er forbundet med vertex% d% n", startVertex, endVertex); }}

3. Tredimensionelt ArrayList

I det forrige afsnit oprettede vi en todimensional ArrayList. Efter den samme logik, lad os oprette en tredimensionel ArrayList:

Lad os antage, at vi vil repræsentere et 3D-rum. Så hvert punkt i dette 3D-rum vil blive repræsenteret af tre koordinater, for eksempel X, Y og Z.

Ud over det, lad os forestille os, at hvert af disse punkter vil have en farve, enten rød, grøn, blå eller gul. Nu kan hvert punkt (X, Y, Z) og dets farve repræsenteres af en tredimensionel ArrayList.

For nemheds skyld antager vi, at vi skaber et (2 x 2 x 2) 3-D-rum. Den har otte point: (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0 , 1), (1, 1, 0) og (1, 1, 1).

Lad os først initialisere variablerne og 3-D ArrayList:

int x_axis_length = 2; int y_axis_length = 2; int z_axis_length = 2; ArrayList<>> space = ny ArrayList (x_axis_length);

Lad os derefter initialisere hvert element af ArrayList med ArrayList:

for (int i = 0; i <x_axis_length; i ++) {space.add (ny ArrayList(y_akselængde)); for (int j = 0; j <y_axis_length; j ++) {space.get (i) .add (ny ArrayList (z_axis_length)); }}

Nu kan vi tilføje farver til punkter i rummet. Lad os tilføje rød farve til punkter (0, 0, 0) og (0, 0, 1):

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

Lad os derefter indstille blå farve til punkter (0, 1, 0) og (0, 1, 1):

space.get (0) .get (1) .add (0, "Blå"); space.get (0) .get (1) .add (1, "Blå");

Og på samme måde kan vi fortsætte med at udfylde punkter i rummet til andre farver.

Bemærk, at et punkt med koordinater (i, j, k) har sin farveinformation gemt i den følgende 3-D ArrayList element:

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

Som vi har set i dette eksempel, er plads variabel er en ArrayList. Også hvert element i dette ArrayList er en 2-D ArrayList (svarende til hvad vi så i afsnit 2).

Bemærk, at indekset over elementer i vores pladsArrayList repræsenterer X-koordinaten, mens hver 2-D ArrayList, til stede ved dette indeks, repræsenterer (Y, Z) koordinaterne.

4. Konklusion

I denne artikel diskuterede vi, hvordan man opretter en flerdimensionel ArrayList i Java. Vi så, hvordan vi kan repræsentere en graf ved hjælp af en 2-D ArrayList. Desuden undersøgte vi også, hvordan man repræsenterer 3-D-rumkoordinater ved hjælp af en 3-D ArrayList.

Første gang brugte vi en ArrayList af ArrayList, mens anden gang brugte vi en ArrayList af 2-D ArrayList. Tilsvarende for at skabe en N-dimensional ArrayList, vi kan udvide det samme koncept.

Den fulde implementering af denne vejledning kan findes på GitHub.