Post

Java Multi Dimensional ArrayList

1. 2차원 ArrayList

0에서 2까지 번호가 매겨진 3개의 꼭지점이 있는 그래프를 표현하려고 한다고 가정한다. 또한 그래프에 (0, 1), (1, 2)(2, 0) 3개의 가장자리가 있다고 가정한다. 꼭지점의 가장자리를 나타낸다.

ArrayList의 ArrayList를 생성하고 채워서 2차원 ArrayList의 가장자리를 나타낼 수 있다.

먼저 새로운 2-D ArrayList를 생성한다.

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

다음으로 ArrayList의 각 요소를 다른 ArrayList로 초기화한다.

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

마지막으로 모든 가장자리 (0, 1), (1, 2)(2, 0)을 2-D ArrayList에 추가할 수 있다.

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

그래프가 유향 그래프가 아니라고 가정한다. 따라서 2-D ArrayList에 가장자리 (1, 0), (2, 1)(0, 2)도 추가해야 한다.

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

그런 다음 전체 그래프를 반복하기 위해 이중 for 루프를 사용할 수 있다.

1
2
3
4
5
6
7
8
9
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);
    }
}

2. 3차원 ArrayList

3차원 공간을 표현하고 싶다고 가정한다. 따라서 이 3차원 공간의 각 점은 X, Y, Z의 세 좌표로 표시된다.

그 외에도 각 점에 빨간색, 녹색, 파란색 또는 노란색의 색상이 있다고 상상한다. 이제 각 점(X, Y, Z)과 해당 색상을 3차원 ArrayList로 표현할 수 있다.

단순화를 위해 (2 x 2 x 2) 3D 공간을 생성한다고 가정한다. 8개의 점이 있다. (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를 초기화한다.

1
2
3
4
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);

그런 다음 ArrayList<ArrayList<String>>을 사용하여 ArrayList의 각 요소를 초기화한다.

1
2
3
4
5
6
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));
    }
}

이제 공간의 점에 색상을 추가할 수 있다. 포인트 (0, 0, 0)(0, 0, 1)에 빨간색을 추가한다.

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

그런 다음 포인트 (0, 1, 0)(0, 1, 1)에 대해 파란색을 설정한다.

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

마찬가지로 다른 색상을 위해 공간의 점을 계속 채울 수 있다.

좌표(i, j, k)가 있는 점의 색상 정보는 다음 3-D ArrayList 요소에 저장된다.

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

이 예제에서 본 것처럼 공간 변수는 ArrayList이다. 또한 이 ArrayList의 각 요소는 2차원 ArrayList이다.

공간 ArrayList의 요소 인덱스는 X 좌표를 나타내는 반면 해당 인덱스에 있는 각 2-D ArrayList는 (Y, Z) 좌표를 나타낸다.

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.