我需要制作像
这样的2D arraylist[[1,2,3],[2,3,4],[3,4,5]]
但是通过使用以下代码我只得到
[[3,4,5],[3,4,5],[3,4,5]]
最后一个数组只是一次又一次地重复。 在遍历问题的过程中,我发现在第一次传递时就像
[[1,2,3]
第二遍:
[[2,3,4],[2,3,4]]
第三遍:
[[3,4,5],[3,4,5],[3,4,5]].
请帮助,因为我坚持下去。
ArrayList<ArrayList<Integer>> combiarray = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> innerarray = new ArrayList<Integer>();
combiarray.clear();
for(k=1;k<(row*column);k=k+column)
{
for(j=k;;j++)
{
innerarray.clear();
for(i=0;i<wincount;i++)
{
innerarray.add(j+i);
}
combiarray.add(innerarray);
Toast.makeText(context,String.valueOf(combiarray),
Toast.LENGTH_SHORT).show();
i--;
if((j+i)%column==0)
{
break;
}
}
}
答案 0 :(得分:1)
ArrayList类有一个名为addAll的方法,它将集合中的所有内容添加到集合中。您可以使用它将最终ArrayList中的内容添加到其他列表中。
如果您希望以所需格式生成列表,可以使用:
ArrayList<ArrayList<Integer>> combiArray = new ArrayList<ArrayList<Integer>>();
int columns = 3;
for (int i = 1; i <= columns; i++) {
ArrayList<Integer> innerArray = new ArrayList<Integer>();
for (int j = i; j < i + columns; j++) {
innerArray.add(j);
}
combiArray.add(innerArray);
}
答案 1 :(得分:1)
问题在于,您始终将相同的arraylist对象添加到列表中,并且只需修改其内容即可。 您必须在每次迭代时创建一个新对象。
目前你正在做这样的事情:
所以替换
innerarray.clear();
通过
innerarray = new ArrayList<Integer>();
答案 2 :(得分:0)
尝试一次......
for(k=1;k<(row*column);k=k+column)
{
for(j=1;j<=k;j++)
{
innerarray.clear();
for(i=0;i<wincount;i++)
{
innerarray.add(j+i);
}
combiarray.add(innerarray);
Toast.makeText(context,String.valueOf(combiarray),Toast.LENGTH_SHORT).show();
i--;
if((j+i)%column==0)
{
break;
}
}
}