创建数组的arraylist

我正在尝试创建一个字符串数组的数组列表。 当我完成后,我希望数组列表看起来像这样:

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

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

 String[] t2 = new String[2]; ArrayList list2 = new ArrayList(); 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 list2 = new ArrayList(); 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 list2 = new ArrayList(); 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 list2 = new ArrayList(); 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中的所有引用都将生效。