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);
Затем, чтобы перебрать весь график, мы можем использовать двойной цикл for:
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). В нем будет восемь очков: (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)
Как мы видели в этом примере, переменная space является ArrayList . Кроме того, каждый элемент этого ArrayList является 2-D ArrayList (аналогично тому, что мы видели в разделе 2).
Обратите внимание, что индекс элементов в нашем пространство ArrayList представляет координату X, в то время как каждый 2-D ArrayList , присутствующий в этом индексе, представляет координаты (Y, Z).
4. Заключение
В этой статье мы обсудили, как создать многомерный ArrayList в Java. Мы видели, как мы можем представить график с помощью 2-D ArrayList . Кроме того, мы также исследовали, как представить трехмерные пространственные координаты с помощью трехмерного ArrayList .
В первый раз мы использовали ArrayList из ArrayList, в то время как во второй раз мы использовали ArrayList из 2-D ArrayList . Аналогично, чтобы создать N-мерный ArrayList, мы можем расширить ту же концепцию.
Полную реализацию этого руководства можно найти на GitHub .