Cómo copiar correctamente una lista (list) en Kotlin: clonación, copia y copia profunda
¡Hola a todos! Acabo de empezar a aprender Kotlin y me encontré con un problema inesperado al trabajar con listas.
Tengo una lista de números `originalList`, y quiero hacer una copia de ella para modificar la copia sin afectar el original. Intenté simplemente asignar una lista a otra:
```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] — ¡cambió!
println("Copied: $copiedList") // [1, 2, 3, 4, 5, 6]
}
```
Como puedes ver, al modificar `copiedList`, también cambia `originalList`. Esto ocurre porque la variable `copiedList` hace referencia al mismo objeto en memoria, no a una nueva copia de los datos.
Sé que en Java para copiar listas se usaba `new ArrayList<>(originalList)`. Pero en Kotlin, ¿hay formas más idiomáticas? ¿Existen métodos como `.clone()`, `.copy()`, o `toList()`? ¿Y qué hacer si la lista contiene objetos complejos que