ArrayList multidimensional em Java

ArrayList multidimensional em Java

1. Visão geral

Criar um ArrayList multidimensional geralmente aparece durante a programação. Em muitos casos, é necessário criar um _ArrayList bidimensional ou um _ArrayList tridimensional.

Neste tutorial, discutiremos como criar um ArrayList multidimensional em Java.

2. ArrayList bidimensional

Suponha que desejemos representar um https://www..com/java-graphs [gráfico] com 3 vértices, numerados de 0 a 2. Além disso, vamos supor que existem 3 arestas no gráfico (0, 1), (1, 2) e (2, 0), em que um par de vértices representa uma aresta.

*Podemos representar as arestas em um _ArrayList 2-D, criando e preenchendo um _ArrayList_ de __ArrayList__s.*

Primeiro, vamos criar um novo ArrayList 2-D:

int vertexCount = 3;
ArrayList<ArrayList<Integer>> graph = new ArrayList<>(vertexCount);

Em seguida, inicializaremos cada elemento de ArrayList com outro ArrayList:

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

Finalmente, podemos adicionar todas as arestas (0, 1), (1, 2) e (2, 0) ao nosso ArrayList 2-D:

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

Vamos também assumir que nosso gráfico não é um gráfico direcionado. Portanto, também precisamos adicionar as arestas (1, 0), (2, 1) e (0, 2) ao nosso ArrayList 2-D:

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

Então, para percorrer o gráfico inteiro, podemos usar um loop for duplo:

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 tridimensional

Na seção anterior, criamos um _ArrayList bidimensional. Seguindo a mesma lógica, vamos criar um _ArrayList tridimensional:

Vamos supor que queremos representar um espaço 3D. Portanto, cada ponto neste espaço 3D será representado por três coordenadas, digamos, X, Y e Z.

Além disso, vamos imaginar que cada um desses pontos terá uma cor, vermelho, verde, azul ou amarelo. Agora, cada ponto (X, Y, Z) e sua cor podem ser representados por um _ArrayList tridimensional.

Para simplificar, vamos supor que estamos criando um espaço 3D (2 x 2 x 2). Ele terá oito pontos: (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0 , 1), (1, 1, 0) e (1, 1, 1).

Vamos primeiro inicializar as variáveis ​​e o ArrayList 3-D:

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

Então, vamos inicializar cada elemento de ArrayList com _ArrayList <ArrayList <>> _:

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

Agora, podemos adicionar cores aos pontos no espaço. Vamos adicionar cor vermelha para os pontos (0, 0, 0) e (0, 0, 1):

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

Então, vamos definir a cor azul para os pontos (0, 1, 0) e (0, 1, 1):

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

Da mesma forma, podemos continuar preenchendo pontos no espaço para outras cores.

Observe que um ponto com coordenadas (i, j, k) tem suas informações de cores armazenadas no seguinte elemento 3-D ArrayList:

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

Como vimos neste exemplo, a variável space é uma ArrayList _. Além disso, cada elemento dessa _ArrayList é uma 2-D ArrayList