當您調用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