这是一个简单的代码,我在其中创建包含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。