当您调用ArrayList的clone()方法时,将创建列表的浅表副本。 什么是数组的浅拷贝?什么是数组的浅拷贝
7
A
回答
4
您应该区分两种副本:浅和深。
虽然deep copy为整个数组及其所有内容(如果它包含引用,然后分配新空间以创建具有相同复制值的实例)分配新空间,但浅拷贝只是分配空间复制数组的大小。
实施例:
阵列甲已被分配给仅包含两mutable objects(例如:一个列表或一个ArrayList)。 你想只有“extern”数组(包含两个引用的数组)的副本,还是你想要一个深层副本,它将分配也包含在A中的两个引用的新实例?
在第一种情况下,例如:
A是0x0000AA
开始在参考阵列ElementOne开始于0x00BBCC
ElementTwo在0x00BBFF
开始如果执行浅拷贝:
B(新阵列)将从参考0x0000BB开始, ElementsOne和ElementsTwo将指向旧引用(0x00BBCC,0x00BBFF)。
如果您执行深层复制,不仅会为数组分配新空间,还会分配空间来容纳新实例(新列表,新列表...)。
3
只复制数组的元素。如果它们是参考类型,则只复制参考。引用后面的对象的任何子类型或元素都是而不是已复制。
5
如果您在ArrayList中有引用,则相同的引用将被复制到克隆的ArrayList中。这些对象不会被克隆。
相关问题
- 1. Javascript浅拷贝
- 2. 浅拷贝
- 3. 为什么懒的拷贝时我们有深拷贝和浅拷贝?
- 4. Java ArrayList的拷贝构造函数是浅拷贝还是深拷贝?
- 5. 硬拷贝vs浅拷贝javascript
- 6. 浅拷贝和深拷贝在C
- 7. 浅拷贝和深拷贝示例
- 8. 混淆hashtable的浅拷贝
- 9. Java中的浅拷贝
- 10. 散列集的浅拷贝
- 11. std :: map的浅/深拷贝
- 12. 从继承类浅拷贝
- 13. structDelete不影响浅拷贝?
- 14. 浅拷贝与基元
- 15. 通过使浅拷贝
- 16. 浅拷贝与向量
- 17. java.lang.System.arraycopy()是否使用浅拷贝?
- 18. 使用追加方法的Python浅拷贝和深拷贝
- 19. Java的克隆 - 深拷贝和浅拷贝
- 20. ,是拷贝2d数组只是拷贝的参考?
- 21. 在Java中的集合的浅拷贝
- 22. 指针数组无法解释的行为(与浅拷贝)C++
- 23. 如何在swift中制作数组的浅拷贝
- 24. 为什么结构浅拷贝不起作用?
- 25. ArrayList的浅拷贝迭代或克隆()
- 26. 关于C++中浅拷贝的问题
- 27. 阵列列表的浅拷贝
- 28. 跟踪实体的浅拷贝
- 29. 简单的问题 - 浅拷贝(VB.Net)
- 30. 如何将浅拷贝一个javascript数组(容器)?
很好的例子很好理解 – selvaraj 2010-09-02 09:01:26