Javaの多次元ArrayList

1. 概要

プログラミング中に多次元の_ArrayList_を作成することがよくあります。 多くの場合、2次元の_ArrayList_または3次元の_ArrayList_を作成する必要があります。
このチュートリアルでは、Javaで多次元の_ArrayList_を作成する方法について説明します。

2. 二次元_ArrayList_

0〜2の番号が付けられた3つの頂点を持つlink:/java-graphs[graph]を表すとします。 さらに、グラフに3つのエッジ(0、1)、(1、2)、および(2、0)があると仮定します。ここで、頂点のペアはエッジを表します。
  • ArrayListsの_ArrayList_を作成してデータを取り込むことで、2次元の_ArrayList_でエッジを表すことができます。*

    最初に、新しい2-D _ArrayList_を作成しましょう。
int vertexCount = 3;
ArrayList<ArrayList<Integer>> 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);
次に、グラフ全体をループするには、double 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_

前のセクションでは、2次元の_ArrayList._を作成しました。同じロジックに従って、3次元の_ArrayList_を作成します。
3次元空間を表現したいと仮定します。 *したがって、この3次元空間の各ポイントは、X、Y、Zなどの3つの座標で表されます。*
それに加えて、これらのポイントのそれぞれが赤、緑、青、黄色のいずれかの色を持つことを想像してみましょう。 これで、各ポイント(X、Y、Z)とその色を3次元の_ArrayList._で表すことができます
簡単にするために、(2 x 2 x 2)3-D空間を作成していると仮定しましょう。 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_を初期化しましょう:
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 <ArrayList <String >> _で初期化します。
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)に赤色を追加しましょう:
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で見たものと同様)。
*注:_space_ _ArrayList_の要素のインデックスはX座標を表し、そのインデックスに存在する各2-D _ArrayList_は(Y、Z)座標を表します。*

4. 結論

この記事では、Javaで多次元_ArrayList_を作成する方法について説明しました。 2-D _ArrayList_を使用してグラフを表現する方法を見ました。 さらに、3次元_ArrayList_を使用して3次元空間座標を表現する方法も検討しました。
1回目は_ArrayListの_ArrayList_を使用し、2回目は2次元の_ArrayList_の_ArrayList_を使用しました。 同様に、* N-Dimensional _ArrayList、_を作成するには、同じ概念を拡張できます。*
このチュートリアルの「完全な実装」はhttps://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-collections-array-list[on GitHub]にあります。