首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建数组数组

创建数组数组
EN

Stack Overflow用户
提问于 2013-08-16 16:06:41
回答 5查看 22.5K关注 0票数 5

我正在尝试创建一个字符串数组的数组列表。完成后,我希望数组列表如下所示:

代码语言:javascript
复制
[0,0], [0,1], [1,0], [1,1,]

我试图定义一个数组,然后将它添加到数组列表中。然后重新定义一个数组,然后再添加它。但是数组列表似乎只包含最后一个条目。看一看:

代码语言:javascript
复制
String[] t2 = new String[2]; 

ArrayList<String[]> list2 = new ArrayList<String[]>();

t2[0]="0";
t2[1]="0";
list2.add(t2);
t2[0]="0";
t2[1]="1";
list2.add(t2);
t2[0]="1";
t2[1]="0";
list2.add(t2);
t2[0]="1";
t2[1]="1";
list2.add(t2);

for (String[] tt : list2) 
{
System.out.print("[");
for (String s : tt)
System.out.print(s+" ");
System.out.print("]");
}

产出如下:

[1,1] [1,1] [1,1] [1,1]

知道如何将每个数组添加到我的数组列表中吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-16 16:08:03

问题是,您要在ArrayList的每个索引中添加相同的对象。每次修改它时,都是在修改同一个对象。要解决这个问题,您必须传递对不同对象的引用。

代码语言:javascript
复制
String[] t2 = new String[2]; 

ArrayList<String[]> list2 = new ArrayList<String[]>();

t2[0]="0";
t2[1]="0";
list2.add(t2); 

t2 = new String[2]; // create a new array
t2[0]="0";
t2[1]="1";
list2.add(t2);

t2 = new String[2];
t2[0]="1";
t2[1]="0";
list2.add(t2);

t2 = new String[2];
t2[0]="1";
t2[1]="1";
list2.add(t2);
票数 6
EN

Stack Overflow用户

发布于 2013-08-16 16:07:55

您正在一次又一次地添加相同的数组t2。您需要添加不同的数组。

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

list2.add(new String[] {"0", "0"});
list2.add(new String[] {"0", "1"});
list2.add(new String[] {"1", "0"});
list2.add(new String[] {"1", "1"});

顺便提一句:您可以在循环中使用Arrays.toString(tt)格式化每个String[]的格式。

票数 4
EN

Stack Overflow用户

发布于 2013-08-16 16:09:07

这是因为要将t2添加到所有条目中。每次覆盖t2时,都会更改所有的值。这是因为t2不是通过值传递的,而是通过引用传递和通过引用保存的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18277657

复制
相关文章

相似问题

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