如何在java中创建动态2D数组

时间:2017-04-27 04:43:44

标签: java arrays

我正在阅读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数组的最接近的。

有人可以帮助我理解如何将元素写入特定行和特定列

3 个答案:

答案 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);
}