¿Cuál es la diferencia entre ArrayList<String>() y mutableListOf<String>() en Kotlin?
¡Hola! Empecé a aprender Kotlin después de Java y noté que para crear una lista mutable se pueden usar dos formas:
```kotlin
val list1: ArrayList = ArrayList()
val list2: MutableList = mutableListOf()
```
Ambas opciones parecen funcionar igual: puedo agregar, eliminar y modificar elementos. Pero me confunde que en un caso el tipo se especifica explícitamente como `ArrayList`, y en el otro como `MutableList`.
Intenté escribir este código:
```kotlin
fun processList(list: MutableList) {
list.add("Kotlin")
}
val arrayList = ArrayList()
val mutableList = mutableListOf()
processList(arrayList) // funciona
processList(mutableList) // también funciona
```
Ambas listas se pasan a una función que espera `MutableList`. ¿Significa que son lo mismo? ¿O hay diferencias sutiles en rendimiento, memoria o comportamiento?
¿Quizás `mutableListOf()` no devuelve un `ArrayList`, sino otra implementación? ¿O es pro