ArrayList浅拷贝迭代或克隆()
我需要一个java ArrayList
的浅表副本,我应该使用clone()
还是迭代原始列表并将元素复制到新的arrayList中,哪个更快?
使用clone()
,或使用copy-constructor。
复制构造函数从传递的集合到数组进行额外的转换,而clone()
方法直接使用内部数组。
请记住clone()
返回Object
,因此您必须强制转换为List
。
无需迭代:
List original = ... List shallowCopy = new ArrayList(original);
http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html#ArrayList%28java.util.Collection%29
而不是手动迭代,您可以使用复制构造函数 。
至于它与使用clone()
之间的速度差异:
- 没关系
- 很可能没有
- 为特定的系统配置和用例做基准测试
问题说浅层扫描不是深度复制。直接从一个arraylist引用到另一个的引用也可以正常工作。深层复制包括复制arraylist中的单个元素。
ArrayList list=new ArrayList (); list.add(3); ArrayList list1=list; //shallow copy...
这有什么问题??