Многомерен ArrayList в Java

1. Общ преглед

Създаването на многомерен ArrayList често се появява по време на програмиране. В много случаи е необходимо да се създаде двуизмерен ArrayList или триизмерен ArrayList .

В този урок ще обсъдим как да създадем многомерен ArrayList в Java.

2. Двуизмерен ArrayList

Да предположим, че искаме да представим графика с 3 върха, номерирани от 0 до 2. В допълнение, нека приемем, че в графиката има 3 ръба (0, 1), (1, 2) и (2, 0), където двойка на върховете представлява ръб.

Можем да представим ръбовете в 2-D ArrayList чрез създаване и попълване на ArrayList от ArrayList s.

Първо, нека създадем нов 2-D ArrayList :

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

След това ще инициализираме всеки елемент от ArrayList с друг ArrayList :

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

И накрая, можем да добавим всички ръбове (0, 1), (1, 2) и (2, 0) към нашия 2-D ArrayList :

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

Нека приемем също, че нашата графика не е насочена графика. Така че, ние също трябва да добавим ръбовете (1, 0), (2, 1) и (0, 2) към нашия 2-D ArrayList :

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

След това, за да преминем през цялата графика, можем да използваме двойка за цикъл:

int vertexCount = graph.size(); for (int i = 0; i < vertexCount; i++) { int edgeCount = graph.get(i).size(); for (int j = 0; j < edgeCount; j++) { Integer startVertex = i; Integer endVertex = graph.get(i).get(j); System.out.printf("Vertex %d is connected to vertex %d%n", startVertex, endVertex); } }

3. Триизмерен ArrayList

В предишния раздел създадохме двуизмерен ArrayList. Следвайки същата логика, нека създадем триизмерен ArrayList :

Нека приемем, че искаме да представим триизмерно пространство. И така, всяка точка в това триизмерно пространство ще бъде представена с три координати, да речем, X, Y и Z.

В допълнение към това, нека си представим, че всяка от тези точки ще има цвят, червен, зелен, син или жълт. Сега всяка точка (X, Y, Z) и нейният цвят могат да бъдат представени от триизмерен ArrayList.

За простота, нека приемем, че създаваме (2 x 2 x 2) 3-D пространство. Той ще има осем точки: (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0 , 1), (1, 1, 0) и (1, 1, 1).

Нека първо инициализираме променливите и 3-D ArrayList :

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

След това нека инициализираме всеки елемент от ArrayList с ArrayList :

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

Сега можем да добавяме цветове към точки в пространството. Нека добавим червен цвят за точки (0, 0, 0) и (0, 0, 1):

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

След това нека зададем син цвят за точки (0, 1, 0) и (0, 1, 1):

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

И по подобен начин можем да продължим да попълваме точки в пространството за други цветове.

Имайте предвид, че точка с координати (i, j, k) има информация за цвета си, съхранявана в следния 3-D ArrayList елемент:

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

Както видяхме в този пример, пространствената променлива е ArrayList . Също така, всеки елемент от този ArrayList е 2-D ArrayList (подобно на това, което видяхме в раздел 2).

Обърнете внимание, че индексът на елементите в нашето пространство ArrayList представлява координатата X, докато всеки 2-D ArrayList , присъстващ при този индекс, представлява координатите (Y, Z).

4. Заключение

В тази статия обсъдихме как да създадем многомерен ArrayList в Java. Видяхме как можем да представим графика с помощта на 2-D ArrayList . Освен това проучихме и как да представим 3-D пространствени координати, използвайки 3-D ArrayList .

Първият път използвахме ArrayList на ArrayList, докато вторият път използвахме ArrayList от 2-D ArrayList . По същия начин, за да създадем N-Dimensions ArrayList, можем да разширим същата концепция.

Пълното изпълнение на този урок може да бъде намерено на GitHub.