Avatar ·

如何在 Kotlin 中复制或克隆列表:完整指南

你好!我刚刚从 Java 开始学习 Kotlin,在复制列表时遇到了问题。 在 Java 中,我习惯使用 `new ArrayList<>(originalList)` 来创建独立副本。但在 Kotlin 中,我发现简单的赋值 `val copy = originalList` 并不会创建副本,而只是对同一对象的引用。我尝试了 `originalList.toList()`,但当我修改副本中的元素时,更改仍然反映在原始列表中?还是我搞错了? 下面是一个让我困惑的例子: ```kotlin data class Person(val name: String, var age: Int) fun main() { val original = mutableListOf(Person("Alice", 25), Person("Bob", 30)) val copy = original.toList() // 这是副本吗? // 尝试修改 (copy as MutableList)[0].age = 26 // 修改“副本”中的年龄 println(original[0].age) // 输出 26!为什么原始列表也变了? } ``` 为什么 `toList()` 没有创建完全独立的副本?如何正确进行深拷贝?