Cómo copiar o clonar una lista en Kotlin: guía completa
¡Hola! Acabo de empezar a aprender Kotlin después de Java y tuve un problema con la copia de listas.
En Java solía hacer algo como `new ArrayList<>(originalList)` para crear una copia independiente. Pero en Kotlin noté que una simple asignación `val copy = originalList` no crea una copia, sino solo una referencia al mismo objeto. Probé `originalList.toList()`, pero cuando cambio elementos en la copia, ¿los cambios aún se reflejan en el original? ¿O estoy confundiendo algo?
Aquí hay un ejemplo que me confunde:
```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() // ¿esto es una copia?
// Intento cambiar
(copy as MutableList)[0].age = 26 // Cambio la edad en la "copia"
println(original[0].age) // Imprime 26! ¿Por qué el original también cambió?
}
```
¿Por qué `toList()` no crea una copia completamente independiente? ¿Cómo hacer una copia profunda correctamente?