Las listas y arrays son estructuras esenciales en Kotlin para almacenar datos. Las listas inmutables, por ejemplo, permiten acceder y modificar elementos, aunque no añadir ni eliminar elementos nuevos. Por otro lado, las listas mutables ofrecen mayor versatilidad, permitiendo agregar, modificar y eliminar elementos fácilmente.
¿Qué diferencias existen entre arrays y listas inmutables?
Los arrays son estructuras básicas con tamaño definido que permiten un acceso rápido en memoria, útiles cuando la cantidad de elementos está clara. Las listas inmutables también poseen tamaño fijo, pero brindan más funciones que los arrays, aunque con un acceso ligeramente más lento en memoria.
Entre las funciones adicionales que las listas inmutables ofrecen frente a los arrays, destacan:
Obtener sublistas con subList.
Acceder al primer o último elemento fácilmente con first y last.
Encontrar el índice del último elemento utilizando lastIndex.
Al segmentar listas inmutables utilizando subList, el rango superior es excluyente. Por ejemplo, desde la posición uno hasta la posición tres significa obtener elementos desde la posición uno hasta la dos, no incluyendo la tres.
¿En qué casos usar listas mutables?
La ventaja significativa de las MutableListOf radica en su capacidad de cambiar en tamaño y contenido dinámicamente. Son especialmente útiles cuando necesitas manipular su contenido activamente, agregando y eliminando elementos.
En un ejercicio práctico sugerido, se recomienda especialmente esta lista mutable para:
Agregar elementos.
Modificar elementos específicos.
Eliminar elementos fácilmente con métodos como removeAt.
¿Cómo utilizar listas mutables en Kotlin?
Veamos un breve ejercicio de cómo manipular una lista mutable en Kotlin:
// Crea una lista mutable con asuntos de emailval asuntos =mutableListOf("Reunión de equipo","Reporte mensual","Invitación al evento")// Modifica el segundo asuntoasuntos[1]="Reporte semanal"// Elimina el primer asuntoasuntos.removeAt(0)// Imprime la lista resultante y su tamañoprintln(asuntos.joinToString())println("Tamaño final: ${asuntos.size}")
Después de ejecutar este código, obtendrás la lista final con dos elementos, comprobando claramente cómo las listas mutables permiten fácil actualización de datos.
Es fundamental revisar la documentación oficial proporcionada en la sección de recursos y explorar otras funciones disponibles, adaptadas a tus necesidades específicas de desarrollo. Te invitamos a comentar acerca de las funcionalidades que encuentres útiles y cómo las aplicarías en tus proyectos.
Este método joinToString() para imprimir el listado de elementos se lo usa cuando creamos arreglos con arrayOf, pero si creamos arreglos con mutableListOf no es necesario usarlo
Denle un vistazo a los demás tipos de listas, cada una tiene una finalidad específica:
val asuntosDeEmails = mutableListOf<String>() asuntosDeEmails.addAll(listOf("Reunion con jefe de platzi","Contratacion Junior","Contratación de Claude Code"))println("Elementos agregados: ${asuntosDeEmails.joinToString()}") asuntosDeEmails[1]="Contración Junior Software Enginner"println("Elementos nuevos: ${asuntosDeEmails.joinToString()}") asuntosDeEmails.removeAt(0)println("Elementos nuevos: ${asuntosDeEmails.joinToString()}")println("Lista final: ${asuntosDeEmails.joinToString()} y su tamaño es: ${asuntosDeEmails.size}")
Ejercicio:
ESOOOO!
Mi aporte del ejercicio.
Me esta encantando este curso.
El profe explica muy bien. 💚
Aquí mezclando un poquito de todo, de las radios que escucho en Perú.
Ahora que veo, usé ArrayList<String>
Es lo mismo que mutableListOf<String>. Solo que aún no dejo Java atrás y mi memoria muscular xddd (En los dedos) me hizo codear eso.
Mi solución :)
val asuntosEmail =mutableListOf("Reunion de equipo","Reporte mensual","Invitacion de evento") asuntosEmail.set(1,"Reporte semanal") asuntosEmail.removeFirst()println("Lista de asuntos de email: ${asuntosEmail.joinToString()}")
Esta fue mi forma de hacerla, de diferente solo usé el método set() :)
las listas sin mejores si planeas hacer varias modificaciones aunque consumen mayor tiempo de ejecución