Arraylist中Arraylist的Clear()函数

时间:2014-07-07 12:05:44

标签: java arraylist

我正在尝试在for循环中的arraylist中添加一个arraylist。当我清除第二个数据中的数据时,它会在第一个arraylist中的第二个arraylist数据中清除。让我用代码解释一下:

ArrayList arrTemp = new ArrayList();
ArrayList arrTemp2 = new ArrayList();


for(int i = 0; i < 10; i++)
{
    for(int j = 0; j < 10; j++)
    {
        //Here I add some strings in arrTemp
    }

    arrTemp2.add(arrTemp); //I will add arrTemp 10 times with different data in it to arrTemp2
    arrTemp.clear(); //Everytime I want to clear the arrTemp
                     //But when I clear it, it also clears already added arrTemp in arrTemp2
}

我希望它在arrTemp2中有10个不同的arrTemp

4 个答案:

答案 0 :(得分:2)

for(int i = 0; i < 10; i++)
{
    arrTemp = new ArrayList();
    for(int j = 0; j < 10; j++)


.....

每个i都有不同的数组。

答案 1 :(得分:1)

arrTemp2.add(arrTemp);// will add arrTemp object's reference to your arrTemp2. 

因此,一旦你清除arrTemp,你实际上将清除()arrTemp指向的空间。

将泛型与addAll()一起使用,如下所示:

public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(1);
al.add(2);
ArrayList<Integer> al2 = new ArrayList<Integer>();
al2.add(3);
al.addAll(al2);
al2.clear();
System.out.println(al);

}

O / P: [1,2,3]

你的案子:

    public static void main(String[] args) {
    ArrayList al = new ArrayList();
    al.add(1);
    al.add(2);
    ArrayList al2 = new ArrayList();
    al2.add(3);
    al.add(al2);
    al2.clear();
    System.out.println(al);

}

O / P: [1,2,[]] //第3项被视为对象

答案 2 :(得分:0)

我不是肯定的,但在我看来你的addTemp2.​​add(arrTemp)没有按预期工作。您是否尝试过调试并检查arrTemp2是否在该行触发后实际填充了某些内容?查看ArrayLists的文档(下面),我想你可能想要addAll。或者,您可以在清除arrTemp之前迭代arrTemp并将每个元素分别添加到arrTemp2。

http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

答案 3 :(得分:0)

容易..

替换 arrTemp.clear();arrTemp = new ArrayList();

。{