我需要一个java ArrayList
的浅表副本,我应该使用clone()
还是迭代原始列表并将元素复制到新的arrayList中,哪个更快?
答案 0 :(得分:43)
无需迭代:
List original = ...
List shallowCopy = new ArrayList(original);
http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html#ArrayList%28java.util.Collection%29
答案 1 :(得分:10)
使用clone()
,或使用复制构造函数。
复制构造函数从传递的集合到数组进行额外的转换,而clone()
方法直接使用内部数组。
请注意,clone()
会返回Object
,因此您必须转发List
。
答案 2 :(得分:8)
答案 3 :(得分:-2)
问题是浅层扫描不是深度复制。直接从一个arraylist引用到另一个的引用也可以正常工作。深层复制包括复制arraylist中的单个元素。
ArrayList<Integer> list=new ArrayList<Integer>();
list.add(3);
ArrayList<Integer> list1=list; //shallow copy...
这有什么问题吗?