无法在不继承旧项目的情况下将项目添加到 arrayList
Cannot add items to arrayList without inheriting old items
所以问题是,在我将所有项目添加到我的新 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]
提前感谢您的帮助。
为了解决这个问题,我对列表进行了深拷贝。使用数据 class 命令复制复制。
sectionsSortedFinal = sectionsSorted.map { it.copy() } as ArrayList<CutomObj>
但不幸的是,这个命令并不能完全进行深度复制。比如我有一个数据class.
data class User(val name: String, val age: Int, val namesOfCarsOwned: ArrayList<String>)
只会深拷贝名字和年龄。 要解决此 问题,需要在 class:
中创建一个自定义复制函数
fun copy(name: String = this.name,
age: Boolean = this.age,
grammarSuggestions: ArrayList<String> = ArrayList(this.grammarSuggestions))
= User(name, age, grammarSuggestions)
所以问题是,在我将所有项目添加到我的新 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]
提前感谢您的帮助。
为了解决这个问题,我对列表进行了深拷贝。使用数据 class 命令复制复制。
sectionsSortedFinal = sectionsSorted.map { it.copy() } as ArrayList<CutomObj>
但不幸的是,这个命令并不能完全进行深度复制。比如我有一个数据class.
data class User(val name: String, val age: Int, val namesOfCarsOwned: ArrayList<String>)
只会深拷贝名字和年龄。 要解决此 问题,需要在 class:
中创建一个自定义复制函数fun copy(name: String = this.name,
age: Boolean = this.age,
grammarSuggestions: ArrayList<String> = ArrayList(this.grammarSuggestions))
= User(name, age, grammarSuggestions)