kjm*_*kjm 5 java arrays string arraylist
我正在尝试创建一个字符串数组的数组列表.当我完成后,我希望数组列表看起来像这样:
[0,0], [0,1], [1,0], [1,1,]
Run Code Online (Sandbox Code Playgroud)
我试图定义一个数组,然后将其添加到数组列表中.然后重新定义一个数组并再次添加它.但是数组列表似乎只包含最后一个条目.看一看:
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("]");
}
Run Code Online (Sandbox Code Playgroud)
输出是:
[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);
Run Code Online (Sandbox Code Playgroud)