繁体   English   中英

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

[英]How to create a dynamic 2D Array in java

我正在阅读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数组的方法。

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

您需要为每个新行重新初始化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]]

您可以使用以下代码

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

这个怎么样?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM