无法在不继承旧项目的情况下将项目添加到 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)