當調用list.addAll(list2)
時,列表中的對象是否會被複制到列表中?或只是複製他們的參考...沒有找到任何javadoc的解釋...Java中將addAll函數複製
回答
沒有對象或其數據的副本;他們的引用被簡單地添加到列表對象中。
不,對象不會被複制;對相同對象的引用將被添加到列表中。
但合同是否強制執行?我看到ArrayList以淺拷貝實現addAll(),但文檔中沒有規範。 –
@ZiyaoWei它聲明它「追加所有元素」,所以這就是它會做的 - 追加所有元素。元素的副本不是元素,而是副本。 –
@ZiyaoWei:沒有通用的方法來複制Java中的對象:沒有像C++那樣自動生成拷貝構造函數,clone()方法由很少的類支持。因此,一個容器*想要*複製其所有元素將發現自己無法這樣做。 –
一般來說,當你「添加全部」時,java不會複製對象,也就是說,對於對象,使用指向原件的指針。
*但要小心!對於字符串,由於不變性,數組副本不會指向原始字符串值,並且不能指望將指針更改爲添加到數組列表的字符串將導致新值。
你將如何複製和添加所有? – Jacolack
- 1. Java Collection addAll複雜度
- 2. 將add()與addAll()插入到Java PriorityHeap中
- 3. PriorityQueue的複雜性addAll()
- 4. 將文件複製到數組中(Java)
- 5. Python函數是否將輸入參數複製到函數中?
- 6. Java泛型複製構造函數
- 7. Java複製構造函數ArrayLists
- 8. java鏈表複製構造函數
- 9. Java調用複製構造函數
- 10. Java複製構造函數和繼承
- 11. 將JavaScript數組複製到Java數組
- 12. 使用clone()複製字段與複製構造函數Java
- 13. 在python中複製函數
- 14. 不能中的addAll
- 15. 爲什麼Actionscript中沒有可用於ArrayCollections的addAll()函數?
- 16. RealmList addAll使用相同的主鍵複製對象
- 17. 複製列表<Object>與「addAll」方法NoSuchElementException
- 18. 複製Java中
- 19. 如何將$ scope中的數據複製到函數中?
- 20. 將java複製到java中的數組時遇到問題
- 21. C + +複製構造函數不復制
- 22. PHP函數複製數據
- 23. 將代碼函數複製到剪貼板的Vim函數
- 24. 在Java中使用構造函數進行深度複製
- 25. Java中的深度複製構造函數
- 26. 在Java中構建複製構造函數
- 27. 試圖在Java中複製PHP的exec()函數
- 28. 在java中複製構造函數而不是克隆
- 29. Java ArrayList:複製構造函數和通過賦值複製的區別
- 30. 複製構造函數
那麼,如果我們稍後將一個元素添加到'list2'中會發生什麼?它會自動添加到'list'嗎? – iamprem
不,當然不是。 –
意思是如果我修改了'list2'中的一個元素,那麼我會看到輸出'list'的修改權? –