Java中的多维数组列表ArrayList

评论 0 浏览 0 2019-01-05

1.概述

在编程过程中,创建一个多维的ArrayList经常会出现。在许多情况下,需要创建一个二维的ArrayList或三维的ArrayList

在本教程中,我们将讨论如何在Java中创建一个多维的ArrayList

2.二维的ArrayList

假设我们想表示一个,有3个顶点,编号为0到2。此外,我们假设图中有3条边(0,1)、(1,2)和(2,0),其中一对顶点代表一条边。

我们可以通过创建和填充 ArrayListArrayList 来表示二维 ArrayList 中的边。

首先,让我们创建一个新的二维 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) 添加到我们的二维 ArrayList

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

我们还假设我们的图不是有向图。因此,我们还需要将边 (1, 0)、(2, 1) 和 (0, 2) 添加到我们的二维 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

假设我们想要表示 3-D 空间。 因此,此 3-D 空间中的每个点都将由三个坐标表示,例如 X、Y 和 Z。

除此之外,让我们假设每个点都有一种颜色,红色、绿色、蓝色或黄色。现在,每个点 (X, Y, Z) 及其颜色都可以用三维 ArrayList 表示。

为了简单起见,让我们假设我们正在创建一个(2 x 2 x 2)三维空间。它将有八个点:(0,0,0),(0,0,1),(0,1,0),(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<String>>来初始化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));
    }
}

现在,我们可以为空间中的点添加颜色。让我们为点(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坐标,而每个二维ArrayList,存在于该索引中,代表(Y,Z)坐标。

4.总结

在这篇文章中,我们讨论了如何在Java中创建一个多维的ArrayList。我们看到了如何使用2-D的ArrayList来表示一个图形。此外,我们还探讨了如何使用3-D ArrayList来表示3-D空间坐标。

第一次,我们使用了ArrayListArrayList,而第二次,我们使用了二维ArrayListArrayList >。同样,要创建一个 N 维 ArrayList,我们可以扩展相同的概念。

本教程的完整实现可以在GitHub上找到。

最后更新2023-07-02
0 个评论
标签