我正在阅读Java中的数组。我想在java中动态创建一个2D数组。我知道我要使用Arraylist但我不知道如何将元素实际写入位置。
我来自C语言背景。创建动态数组并使用for循环向其添加元素非常容易。但是,同样的逻辑在这里不起作用。我已经阅读了另一个答案,但它们没有帮助,他们使用高级概念或使用静态声明。
ArrayList<Integer> Arr1=new ArrayList<>();
ArrayList<ArrayList<Integer>> Arr2=new ArrayList<ArrayList<Integer>>();
for(int i=0;i<rows;i++){
for(int j=0;j<columns;j++){
Arr1.add(j);
}
Arr2.add(Arr1);
}
我的实现是错误的,但这是我可以考虑在java中将元素写入动态2D数组的最接近的。
有人可以帮助我理解如何将元素写入特定行和特定列
答案 0 :(得分:0)
您需要为每个新行重新初始化Arr1。像这样:
int rows = 3, columns = 4;
ArrayList<Integer> Arr1;
ArrayList<ArrayList<Integer>> Arr2 = new ArrayList<>();
for (int i = 0; i < rows; i++) {
Arr1 = new ArrayList<>();
for (int j = 0; j < columns; j++) {
Arr1.add(j);
}
Arr2.add(Arr1);
}
System.out.println(Arr2);
哪个应该出来:
[[0,1,2,3],[0,1,2,3],[0,1,2,3]]
答案 1 :(得分:0)
您可以使用以下代码
ArrayList<ArrayList<Integer>> Arr2=new ArrayList<ArrayList<Integer>>();
for(int i=0;i<rows;i++){
ArrayList<Integer> Arr1=new ArrayList<>();
for(int j=0;j<columns;j++){
Arr1.add(j);
}
Arr2.add(Arr1);
}
答案 2 :(得分:0)
怎么样?
ArrayList<ArrayList<Integer>> Arr1=new ArrayList<ArrayList<Integer>>();
for(int i=0;i<rows;i++){
ArrayList<Integer> Arr2=new ArrayList<Integer>();
for(int j=0;j<columns;j++){
Arr2.add(j);
}
Arr1.add(Arr2);
}