在android中添加整数arraylist到arraylist

时间:2014-02-21 13:52:55

标签: java android arraylist integer

我需要制作像

这样的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;
            }
        }
    }

3 个答案:

答案 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对象添加到列表中,并且只需修改其内容即可。 您必须在每次迭代时创建一个新对象。

目前你正在做这样的事情:

enter image description here

所以替换

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;
        }

    }
}