Multidimensionale ArrayList in Java

1. Overzicht

Creëer een multidimensionaal ArrayList komt vaak naar voren tijdens het programmeren. In veel gevallen is het nodig om een ​​tweedimensionaal te creëren ArrayList of een driedimensionaal ArrayList.

In deze zelfstudie bespreken we hoe u een multidimensionaal kunt maken ArrayList in Java.

2. Tweedimensionaal ArrayList

Stel dat we een grafiek willen vertegenwoordigen met 3 hoekpunten, genummerd van 0 tot 2. Laten we daarnaast aannemen dat er 3 randen in de grafiek zijn (0, 1), (1, 2) en (2, 0), waar een paar van hoekpunten vertegenwoordigt een rand.

We kunnen de randen in een 2D weergeven ArrayList door een ArrayList van ArrayLists.

Laten we eerst een nieuwe 2D maken ArrayList:

int vertexCount = 3; ArrayList graph = nieuwe ArrayList (vertexCount);

Vervolgens initialiseren we elk element van ArrayList met iemand anders ArrayList:

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

Ten slotte kunnen we alle randen (0, 1), (1, 2) en (2, 0) toevoegen aan onze 2-D ArrayList:

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

Laten we ook aannemen dat onze graaf geen gerichte graaf is. We moeten dus ook de randen (1, 0), (2, 1) en (0, 2) toevoegen aan onze 2-D ArrayList:

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

Om vervolgens de hele grafiek te doorlopen, kunnen we een dubbele for-lus gebruiken:

int vertexCount = graph.size (); voor (int i = 0; i <vertexCount; i ++) {int edgeCount = graph.get (i) .size (); for (int j = 0; j <edgeCount; j ++) {Integer startVertex = i; Geheel getal endVertex = graph.get (i) .get (j); System.out.printf ("Vertex% d is verbonden met hoekpunt% d% n", startVertex, endVertex); }}

3. Driedimensionaal ArrayList

In het vorige gedeelte hebben we een tweedimensionaal gemaakt ArrayList. Laten we, volgens dezelfde logica, een driedimensionaal maken ArrayList:

Laten we aannemen dat we een 3D-ruimte willen vertegenwoordigen. Dus elk punt in deze 3D-ruimte wordt vertegenwoordigd door drie coördinaten, bijvoorbeeld X, Y en Z.

Laten we ons daarnaast voorstellen dat elk van die punten een kleur heeft: rood, groen, blauw of geel. Nu kan elk punt (X, Y, Z) en zijn kleur worden weergegeven door een driedimensionaal ArrayList.

Laten we voor de eenvoud aannemen dat we een (2 x 2 x 2) 3D-ruimte creëren. Het heeft acht punten: (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0 , 1), (1, 1, 0) en (1, 1, 1).

Laten we eerst de variabelen en de 3D initialiseren ArrayList:

int x_axis_length = 2; int y_axis_length = 2; int z_axis_length = 2; ArrayList<>> spatie = nieuwe ArrayList (x_axis_length);

Laten we vervolgens elk element van ArrayList met ArrayList:

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

Nu kunnen we kleuren toevoegen aan punten in de ruimte. Laten we een rode kleur toevoegen voor punten (0, 0, 0) en (0, 0, 1):

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

Laten we dan de blauwe kleur instellen voor punten (0, 1, 0) en (0, 1, 1):

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

En op dezelfde manier kunnen we doorgaan met het vullen van punten in de ruimte voor andere kleuren.

Merk op dat de kleurinformatie van een punt met coördinaten (i, j, k) is opgeslagen in de volgende 3D ArrayList element:

ruimte.get (i) .get (j) .get (k) 

Zoals we in dit voorbeeld hebben gezien, is de ruimte variabele is een ArrayList. Ook elk element hiervan ArrayList is een 2-D ArrayList (vergelijkbaar met wat we zagen in sectie 2).

Merk op dat de index van elementen in onze ruimteArrayList vertegenwoordigt de X-coördinaat, terwijl elke 2-D ArrayList, aanwezig bij die index, vertegenwoordigt de (Y, Z) -coördinaten.

4. Conclusie

In dit artikel hebben we besproken hoe u een multidimensionaal kunt maken ArrayList in Java. We hebben gezien hoe we een grafiek kunnen weergeven met een 2-D ArrayList. Bovendien hebben we ook onderzocht hoe we 3D-ruimtecoördinaten kunnen weergeven met behulp van een 3D ArrayList.

De eerste keer gebruikten we een ArrayList van ArrayList, terwijl we de tweede keer een ArrayList van 2-D ArrayList. Evenzo om een ​​N-dimensionaal te creëren ArrayList, we kunnen hetzelfde concept uitbreiden.

De volledige implementatie van deze tutorial is te vinden op GitHub.