[英]Creating arraylist of arrays
我正在尝试创建一个字符串数组的数组列表。 当我完成后,我希望数组列表看起来像这样:
[0,0], [0,1], [1,0], [1,1,]
我试图定义一个数组,然后将其添加到数组列表中。 然后重新定义一个数组并再次添加它。 但是数组列表似乎只包含最后一个条目。 看一看:
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]
关于如何将每个数组添加到我的数组列表的任何想法?`
问题是您要将相同的对象添加到ArrayList的每个索引。 每次修改它时,您都在修改同一个对象。 要解决此问题,您必须将引用传递给不同的对象。
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);
您反复添加相同的数组t2
。 您需要添加不同的数组。
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)
一下:你可以在循环中使用Arrays.toString(tt)
来格式化每个String[]
的方式。
这是因为您要将t2添加到所有条目中。 每次覆盖t2时,您都会更改所有值。 这是因为t2没有通过值传递,它通过引用传递并通过引用保存。
您只创建一个数组,并将其引用重复放入ArrayList中。
相反,您可以为List中的每个元素创建一个新数组:
ArrayList<String[]> list2 = new ArrayList<String[]>();
String[] t2;
t2 = new String[2];
t2[0]="0";
t2[1]="0";
list2.add(t2);
t2 = new String[2];
t2[0]="0";
t2[1]="1";
list2.add(t2);
t2 = new String[2];
t2[0]="1";
t2[1]="0";
t2 = new String[2];
list2.add(t2);
t2[0]="1";
t2[1]="1";
list2.add(t2);
您只有一个项目(t2),并且每次将其添加到ArrayList。 实际上,t2的引用将保存在ArrayList中,因此当您更改t2值时,ArrayList中的所有引用都将生效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.