清除内部ArrayList清空外部ArrayList

时间:2015-12-17 20:55:30

标签: java arraylist

这是一个简单的代码,我在其中创建包含ArrayList ArrayList的嵌套String。我发现了一个奇怪的事情:当我清除内部ArrayList时,内部和外部ArrayLists的大小减少到0。

public static void  main(String[] a)
{
    ArrayList<ArrayList<String>> arrayLists = new ArrayList<>();
    ArrayList<String> element = new ArrayList<>();
    element.add("1");
    element.add("2");
    arrayLists.add(element);
    System.out.println(arrayLists);

    element.clear();
    element.add("3");
    element.add("4");
    arrayLists.add(element);
    System.out.println(arrayLists);

    element.clear();
    element.add("5");
    element.add("6");
    arrayLists.add(element);
    System.out.println(arrayLists);
}

该代码的输出是:

[[1, 2]]
[[3, 4], [3, 4]]
[[5, 6], [5, 6], [5, 6]]

我找到了如何解决问题并输出如下:

[[1, 2]]
[[1, 2], [3, 4]]
[[1, 2], [3, 4], [5, 6]]

我没有清除内部ArrayList,而是再次初始化它。这是代码:

public static void  main(String[] a)
    {
        ArrayList<ArrayList<String>> arrayLists = new ArrayList<>();
        ArrayList<String> element = new ArrayList<>();
        element.add("1");
        element.add("2");
        arrayLists.add(element);
        System.out.println(arrayLists);

        element = new ArrayList<>();
        element.add("3");
        element.add("4");
        arrayLists.add(element);
        System.out.println(arrayLists);

        element = new ArrayList<>();
        element.add("5");
        element.add("6");
        arrayLists.add(element);
        System.out.println(arrayLists);
    }

所以问题是:这是不是就是这样(以及背后的机制)还是需要报告的错误?我已经使用调试器逐步检查了此代码,并在ArrayList被清除后检查了外部element的大小为0。

0 个答案:

没有答案