考虑以下代码:
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() 并纠正我的想法时会发生什么?谢谢。
最佳答案
I thought the "test" had already recorded the "a" so I can do anything about "a" without changing "test".
通过存储对 a
所保存的同一对象的引用来记录 a
。当你这样做时
a.clear()
您正在同一对象上调用 clear
方法。
关于Java arraylist 清除或重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26454773/