所以問題是,當我把所有的專案添加到我的新arrayList2中,并且在arrayList1中改變了一些東西后,在arrayList2中也有同樣的改變。我的目標是基本上克隆arraylist1中的所有專案,并且在我改變了一些東西后,arraylist2中的專案仍然和addAll命令后一樣。我遇到的挑戰的例子:
arraylist2.addAll(arrayList1)
arraylist2[0].arrayCoordinates / [0, 0]
arraylist1[0].arrayCoordinates = arrayOf(1, 1)
arraylist2[0].arrayCoordinates / [1, 1]
提前感謝您的幫助
。uj5u.com熱心網友回復:
為了解決這個問題,我對串列進行了深度復制。使用資料類命令copy進行復制。
sectionsSortedFinal = sectionsSorted.map { it.copy() } as ArrayList< CutomObj>
但不幸的是,這個命令并不能完全深入復制。例如,我有一個資料類。
data class User(val name: String, val age: Int, val namesOfCarsOwned: ArrayList<String>)
它只會深度復制名稱和年齡。為了解決這個問題,需要在類中制作一個自定義的復制函式:
fun copy(name。String = this.name,
年齡。Boolean = this.age。
grammarSuggestions: ArrayList<String> = ArrayList(this.grammarSuggestions))
= User(name, age, grammarSuggestions)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331116.html
標籤:
上一篇:四邊形面積公式
下一篇:SVG圖示的滑鼠移動影片
