Capítulo 10 – Listas en Kotlin

curso de programación kotlin

Listas en Kotlin

En el capítulo anterior hablamos sobre los arrays o arreglos y vimos todo el potencial que tenía, pero uno de los mayores inconvenientes era la limitación al definirlos, puesto que teníamos que saber de ante mano el tamaño de dicho array.

Tipos de listas

Las colecciones se pueden clasificar en dos grandes grupos, las mutables e inmutables. Es decir, las que se pueden editar (mutables) y las que son solo de lectura (inmutable).

Listas inmutables

La declaración de una lista inmutable sería así.

Existen varias funciones útiles para trabajar con ellas.

Como pueden ver podemos trabajar completamente con ellas, a excepción de añadir más elementos.

También podemos filtrar usando el patrón iterator, que es un mecanismo para acceder a los elementos de la lista, por ejemplo .first() o .last()

El .filter nos permite filtrar en la lista a través de una o varias condiciones que pongamos. Para ello llamamos a it (iterator) y buscaremos en la lista, si contiene la palabra “Lunes” o “Juernes“. En este caso solo pintará “Lunes“.

Listas mutables

Ahora nos toca hablar de las más interesantes, las listas mutables, que poseen todo lo anterior, pero también nos da la posibilidad de ir rellenando la lista a medida que lo necesitemos, el único inconveniente es que más ineficiente con la memoria.

La definición es muy similar, a través de la función mutableListOf. Ahora si os fijáis he añadido de lunes a sábado que será lo que pintará, luego, usando mutableList.add he añadido el domingo.

Por defecto los valores se irán añadiendo en la última posición, pero podemos añadir el índice en el que queramos escribir nuestro valor.

Con esto, si pintásemos la lista nos mostraría lo siguiente.

Ahora tenemos que tener cuidado con una lista mutable por el simple hecho de que podría estar vacía o contener un null. Un null es un valor nulo en una de sus posiciones, que, si acedemos a él e intentamos operar, la aplicación se romperá, nos saltará un crash. Para ello, tenemos algunas funciones que nos permitirá trabajar como una lista inmutable, pero con seguridad.

En este ejemplo he instanciado una lista sin valor alguno, por lo que está vacía. Con todos esos métodos recuperaremos un null (menos el primero que dará true) y la aplicación seguirá corriendo, si por le contrario hubiera puesto un .first() nos hubiese pasado lo siguiente.

curso de programación kotlin

Debemos de tener mucho cuidado a la hora de trabajar con datos que puedan mutar.

Recorriendo listas

Igual que hicimos en el capítulo de las arrays, aquí también tenemos formas (muy similares) para recorrer las listas.

Esta sería la forma más sencilla, y nos devolvería el contenido de cada uno de los valores de la lista.

Si necesitamos saber también la posición de cada uno de los valores podemos usar la función .withIndex que nos permite generar 2 variables, la primera será la posición y la segunda el contenido.

Para el último ejemplo, usaremos .forEach, una función que hará que por cada posición haga una cosa, por ejemplo pintar el valor como el for anterior. A diferencia de ellos, no tenemos una variable con el contenido (véase índice e item) sino que accedemos a él con el iterator, en este caso simplemente habría que poner it.

En este ejemplo imaginemos que queremos añadir a los días de la semana dos puntos “:” así que vamos a crear una nueva lista (mutable) e iremos rellenando la lista a través del forEach.

Comparte 🙂
0

6 comentarios sobre “Capítulo 10 – Listas en Kotlin

  1. Oscar Contestar

    En esta mañana me he leido los 10 capitulos y te agradezco por ellos son geniales. Tienes alma de maestro en ayudar a todos los hambrientos de conocimiento (me incluyo) Gracias.
    Cuando subes mas capitulos????

    • Aris Autor del artículoContestar

      Me alegra mucho leer este tipo de comentarios. Aquí tienes el índice de todos los capítulos ( https://cursokotlin.com/curso-programacion-kotlin-android/ ) , ahora vamos por el 16, el 17 espero sacarlo esta semana (es bastante amplio), persistencia de datos con Room, muy interesante y útil. En la página de Facebook voy publicando todos los capítulos nuevos por si quieres dejar un like 😉

      Saludos!

  2. Marcos Contestar

    Hola Aris,

    No entiendo por qué lo siguiente funciona.

    for ((indice, item) in mutableList.withIndex()) {
    println(“La posición $indice contiene $item”)
    }

    “indice” y “item” son nombres que te estás inventando tu no? Podrías llamarles index y cosa por ejemplo.

    Imagino que independientemente del nombre que le des, la primera siempre sera para indice y la segunda para el valor, y no aceptará más de dos parametros?

    • Aris Autor del artículoContestar

      Exacto @Marcos, los nombres los puedes poner a tu gusto. ¿Qué es lo que no funciona o que error tienes? Entiendo que “mutableList” es una lista que tú previamente has creado no?

      Saludos

      • Marcos Contestar

        Hola Gracias por responder tan rápido.

        Lo que ocurría es que no acababa de entender si el primer argumento correspondía siempre al indice, y el segundo al valor, entonces. Ya lo tengo claro.

        En java no existen este tipo de for o al menos no lo s he usado, hay que ir adaptándonos ^^

        Saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *