Java中的多维数组列表ArrayList
1.概述
在编程过程中,创建一个多维的ArrayList经常会出现。在许多情况下,需要创建一个二维的ArrayList或三维的ArrayList。
在本教程中,我们将讨论如何在Java中创建一个多维的ArrayList。
2.二维的ArrayList
假设我们想表示一个图,有3个顶点,编号为0到2。此外,我们假设图中有3条边(0,1)、(1,2)和(2,0),其中一对顶点代表一条边。
我们可以通过创建和填充 ArrayList 的 ArrayList 来表示二维 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空间坐标。
第一次,我们使用了ArrayList的ArrayList,而第二次,我们使用了二维ArrayList的ArrayList >。同样,要创建一个 N 维 ArrayList,我们可以扩展相同的概念。
本教程的完整实现可以在GitHub上找到。