Java arraylist清除或重新启动

时间:2014-10-19 19:58:17

标签: java arraylist clear

请考虑以下代码:

import java.util.ArrayList;
public class Main{
    public static void main(String args[]){
        ArrayList<ArrayList<Integer>> test = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> a = new ArrayList<Integer>();
        a.add(7);
        test.add(a);
        System.out.println(test);
        a.clear()
        System.out.println(test);
    }
}

测试的输出会有所不同(一个是[[7]],另一个是[[]]) 如果我们使用a = new ArrayList()而不是a.clear(),结果会有所不同。我认为“测试”已经记录了“a”所以我可以做任何关于“a”的事情而不改变“测试”。 任何人都可以告诉我当我使用a.clear()并纠正我的想法时会发生什么?谢谢。

2 个答案:

答案 0 :(得分:1)

  

我认为“测试”已经记录了“a”所以我可以做任何事情   关于“a”而不改变“测试”。

通过存储a所持有的同一对象的引用来记录a。当你这样做

a.clear()

您正在同一个对象上调用clear方法。

答案 1 :(得分:0)

a.clear()删除列表中的所有数据。它直接影响对象a及其数据。 a = new ArrayList()将创建一个新的ArrayList并将其引用分配给变量a。由于test存储结果的旧引用仍为[[7]]