您似乎认为您有一个二维数字矩阵,存储为ArrayList。那根本不是你所拥有的。相反,您有一个二维矩阵,其中每个元素都是一个ArrayList。这意味着您的代码中确实有 3 个维度。我不认为那是你想要的。有几种方法可以使用已有的结构来实现二维(即,无需使用某些外部库)。
二维数字数组
数组是一个易于理解的结构,所以让我们从它开始。
Number[][] table = new Number[10][10];
table[0][0] = 0;
table[0][1] = 10;
table[1][0] = 20;
table[1][1] = 30;
System.out.println("Value="+table[1][0].get());
此代码声明了一个Number 类型的二维数组,然后将其初始化为 10 行和 10 列。然后它部分填充数字。只要您访问已经初始化的元素,就可以了。尝试访问尚未初始化的元素(如 table[3][4])会很糟糕。
另一种初始化数组的方法
Number[][] table = { { 0, 10 }, { 20, 30 } };
System.out.println("Value=" + table[1][0]);
这和以前一样,但一次全部初始化。这个特定的数组只有 2 行 2 列。
嵌套数组列表
如果您想使用 ArrayList 而不是数组,那很好。你只需要意识到ArrayList实际上将包含其他ArrayLists,每个Numbers都将包含Numbers。像这样:
ArrayList<ArrayList<Number>> table = new ArrayList<>();
table.add(new ArrayList<>());
table.add(new ArrayList<>());
table.get(0).add(0);
table.get(0).add(10);
table.get(1).add(20);
table.get(1).add(30);
System.out.println("Value=" + table.get(1).get(0));
在此示例中,您首先声明一个包含ArrayLists 的ArrayList,其中包含Numbers,并初始化外部ArrayList。然后你创建一些内部ArrayLists,最后给它们每个Numbers。
总结
您可以根据需要使用数组或ArrayLists。您只需在访问它们的元素之前正确初始化它们。如何初始化取决于您选择的数据结构。
所有代码
import java.util.ArrayList;
public class TwoD {
public void example1() {
Number[][] table = new Number[10][10];
table[0][0] = 0;
table[0][1] = 10;
table[1][0] = 20;
table[1][1] = 30;
System.out.println("\nExample 1");
System.out.println("Value=" + table[1][0]);
}
public void example2() {
Number[][] table = { { 0, 10 }, { 20, 30 } };
System.out.println("\nExample 2");
System.out.println("Value=" + table[1][0]);
}
public void example3() {
ArrayList<ArrayList<Number>> table = new ArrayList<>();
table.add(new ArrayList<>());
table.add(new ArrayList<>());
table.get(0).add(0);
table.get(0).add(10);
table.get(1).add(20);
table.get(1).add(30);
System.out.println("\nExample 3");
System.out.println("Value=" + table.get(1).get(0));
}
public static void main(String[] args) {
TwoD me = new TwoD();
me.example1();
me.example2();
me.example3();
}
}