Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

100
Vistas
Diferencia entre ArrayList<String>() y mutableListOf<String>() en Kotlin
private val repositories = mutableListOf<String>() private val repositories = ArrayList<String>()

Ambas son listas mutables, entonces, ¿cuál es el punto de dos palabras clave mutableListOf o ArrayList ?

o hay alguna diferencia importante?

over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Debajo de las cubiertas, tanto mutableListOf() como arrayListOf() crean una instancia de ArrayList. ArrayList es una clase que implementa la interfaz MutableList.

La única diferencia es que arrayListOf() devuelve ArrayList como un ArrayList real. mutableListOf() devuelve una MutableList, por lo que la ArrayList real está "disfrazada" como las partes descritas por la interfaz MutableList.

La diferencia, en la práctica, es que ArrayList tiene algunos métodos que no forman parte de la interfaz de MutableList (trimToSize y sureCapacity).

La diferencia, filosóficamente, es que MutableList solo se preocupa por el comportamiento del objeto que se devuelve. Simplemente devuelve "algo que actúa como MutableList". El ArrayList se preocupa por la "estructura" del objeto. Le permite manipular directamente la memoria asignada por el objeto (trimToSize).

La regla general es que debe preferir la versión de interfaz de las cosas (mutableListOf()) a menos que realmente tenga una razón para preocuparse por los detalles exactos de la estructura subyacente.

O, en otras palabras, si no sabe cuál quiere, elija mutableListOf primero.

over 4 years ago · Santiago Trujillo Denunciar

0

Como se puede ver en las fuentes :

 public inline fun <T> mutableListOf(): MutableList<T> = ArrayList()

Entonces, no hay diferencia, solo un método de conveniencia.

over 4 years ago · Santiago Trujillo Denunciar

0

mutableListOf<T>() es una invocación de función en línea que devuelve una MutableList<T> . A partir de hoy, mutableListOf devuelve una instancia de ArrayList .

ArrayList<String>() es una invocación de constructor y no se puede insertar en línea.

En otras palabras, dado:

 val a = mutableListOf<String>() val b = ArrayList<String>()
  • a es de tipo MutableList<String>
  • b es de tipo ArrayList<String>

En tiempo de ejecución, tanto a como b tendrán una instancia de ArrayList .

Tenga en cuenta que la inserción es particularmente útil cuando se combina con la reificación de tipos , lo que justifica la existencia de listOf , mutableListOf y similares.

over 4 years ago · Santiago Trujillo Denunciar

0

La única diferencia entre los dos es comunicar tu intención.

Cuando escribe val a = mutableListOf() , está diciendo "Quiero una lista mutable, y no me importa especialmente la implementación". Cuando escribe, en cambio, val a = ArrayList() , está diciendo "Específicamente quiero una ArrayList ".

En la práctica, en la implementación actual de Kotlin compilando en JVM, llamar a mutableListOf producirá una ArrayList y no hay diferencia en el comportamiento: una vez que se crea la lista, todo se comportará igual.

Ahora, digamos que una versión futura de Kotlin cambia mutableListOf para devolver un tipo diferente de lista.

Lo más probable es que el equipo de Kotlin solo haga ese cambio si cree que la nueva implementación funciona mejor para la mayoría de los casos de uso. mutableListOf entonces haría que usara esa nueva implementación de lista de forma transparente, y obtendría ese mejor comportamiento de forma gratuita. Vaya con mutableListOf si eso suena como su caso.

Por otro lado, tal vez pasó mucho tiempo pensando en su problema y pensó que ArrayList realmente es la mejor opción para su problema, y no quiere arriesgarse a que lo cambien a algo subóptimo. Entonces probablemente desee usar ArrayList directamente o usar la función de fábrica arrayListOf (un análogo específico de ArrayList para mutableListOf ).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda