如何在 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()` 没有创建完全独立的副本?如何正确进行深拷贝?