首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中动态分配的数组数组

java中动态分配的数组数组
EN

Stack Overflow用户
提问于 2016-01-10 17:22:23
回答 2查看 124关注 0票数 1

我对数组对象的数组有一个问题。我尝试了默认的Java数组,如下所示:

代码语言:javascript
复制
String[][] array = new String[5][5];

而且它起作用了。但现在我面临着另一个问题。我不知道数组的大小,所以我需要一个动态分配的数组。我试过这个:

代码语言:javascript
复制
ArrayList<String> array = new ArrayList<>();
ArrayList<ArrayList<String>> arrayOfArrays = new ArrayList<>();

array.add("1");
array.add("2");
array.add("3");
arrayOfArrays.add(array);
System.out.println(arrayOfArrays);
array.clear();
array.add("4");
array.add("5");
array.add("6");
arrayOfArrays.add(array);
System.out.println(arrayOfArrays);

然后它会打印:

代码语言:javascript
复制
[[1, 2, 3]]
[[4, 5, 6], [4, 5, 6]]

我不需要重写它。它应该看起来像这样:

代码语言:javascript
复制
[[1, 2, 3]]
[[1, 2, 3], [4, 5, 6]]

我面对这个问题已经很长时间了,我尝试了很多变通方法,但我需要一些聪明的解决方案。此外,我将感谢任何帮助。

我还有第二个问题。如何在循环中添加?因为它具有与第一种情况相同的输出。例如:

代码语言:javascript
复制
for (int i = 0; i < array.size() - 1; i++) {
    arrayOfArrays.add(swap(array, i, i+1));       
}
EN

回答 2

Stack Overflow用户

发布于 2016-01-10 17:23:41

您向外部List添加了两次相同的ArrayList实例。

您需要创建两个不同的ArrayList实例来添加到您的arrayOfArrays

替换

代码语言:javascript
复制
array.clear();

使用

代码语言:javascript
复制
array = new ArrayList<>();
票数 2
EN

Stack Overflow用户

发布于 2016-01-10 17:35:54

您应该意识到,您只是使用相同的array对象,并将其添加到arrayOfArrays中两次,这就是为什么它将相同的内容打印两次。

实际上,您需要的是:

代码语言:javascript
复制
    ArrayList<ArrayList<String>> arrayOfArrays = new ArrayList<>();

    ArrayList<String> array1 = new ArrayList<>();
    array1.add("1");
    array1.add("2");
    array1.add("3");
    arrayOfArrays.add(array1);
    System.out.println(arrayOfArrays);

    ArrayList<String> array2= new ArrayList<>();
    array2.add("4");
    array2.add("5");
    array2.add("6");
    arrayOfArrays.add(array2);
    System.out.println(arrayOfArrays);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34703866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档