Avatar ·

如何在Kotlin中正确复制列表(list):克隆、拷贝和深拷贝

大家好!我刚开始学习Kotlin,在处理列表时遇到了一个意想不到的问题。 我有一个数字列表 `originalList`,我想复制它,以便修改副本时不影响到原列表。我尝试直接将一个列表赋值给另一个: ```kotlin fun main() { val originalList = mutableListOf(1, 2, 3, 4, 5) val copiedList = originalList copiedList.add(6) println("Original: $originalList") // [1, 2, 3, 4, 5, 6] — 改变了! println("Copied: $copiedList") // [1, 2, 3, 4, 5, 6] } ``` 如你所见,修改 `copiedList` 时,`originalList` 也发生了变化。这是因为变量 `copiedList` 引用的是内存中的同一个对象,而不是数据的新副本。 我知道在Java中,复制列表使用的是 `new ArrayList<>(originalList)`。但在Kotlin中是否有更惯用的方式?有没有像 `.clone()`、`.copy()` 或 `toList()` 这样的方法?如果列表中包含复杂对象,又该如何处理?