【发布时间】:2013-02-14 04:54:15
【问题描述】:
我有一个关于 Java 中 ArrayList 的 clone() 方法的问题。
ArrayList<HeavyOjbect> original = new ArrayList<HeavyOjbect>();
original.add(new HeavyOjbect(0));
original.add(new HeavyOjbect(1));
original.add(new HeavyOjbect(2));
ArrayList<Integer> copy = original;
copy.remove(0);
原始 -> [HeavyOjbect1,HeavyOjbect2]
复制 -> [HeavyOjbect1, HeavyOjbect2]
现在使用 clone() 方法
ArrayList<HeavyOjbect> original = new ArrayList<HeavyOjbect>();
original.add(new HeavyOjbect(0));
original.add(new HeavyOjbect(1));
original.add(new HeavyOjbect(2));
ArrayList<Integer> copy = (ArrayList<HeavyOjbect>) original.clone();
copy.remove(0);
原始 -> [HeavyOjbect0,HeavyOjbect1,HeavyOjbect2]
复制 -> [HeavyOjbect1, HeavyOjbect2]
对吗?
但我不知道克隆是做什么的。它会克隆每个 HeavyObject 吗? 我的意思是如果克隆 1000 倍我的 ArrayList,内存会爆炸吗?
编辑: 所以克隆
new HeavyOjbect(0) -> @10
new HeavyOjbect(1) -> @20
new HeavyOjbect(1) -> @30
original(ref1 to @10, ref1 to @20, ref1 to @30)
copy(ref2 to @10, ref2 to @20, ref2 to @30)
对吗?
谢谢
【问题讨论】:
标签: java performance arraylist clone