streakode

Kotlin 2.4

Ejercicios de Kotlin sobre Colecciones

7 ejercicios de Colecciones en Kotlin. Piensa la respuesta antes de abrirla: la explicación dice por qué las demás opciones fallan.

  1. 1 · Elige la respuesta · nivel 1

    ¿Qué pasa con este código?

    val nums = listOf(1, 2, 3)nums.add(4)
    • ANo compila: List no tiene add
    • BAñade el 4 al final
    • CLanza UnsupportedOperationException
    • DCrea una lista nueva con el 4
    Ver la respuesta

    Respuesta: A. No compila: List no tiene add

    listOf devuelve una List de solo lectura y esa interfaz no tiene add. Para añadir, usa mutableListOf, o crea una lista nueva con nums + 4.

  2. 2 · Elige la respuesta · nivel 1

    ¿Qué imprime este código?

    fun main() {    val pets = listOf("gato", "perro", "loro")    println(pets[2])}
    • Aloro
    • Bperro
    • Cgato
    • DError
    Ver la respuesta

    Respuesta: A. loro

    Los índices empiezan en 0: pets[0] es gato, pets[1] perro y pets[2] loro.

  3. 3 · Elige la respuesta · nivel 1

    ¿Qué imprime este código?

    fun main() {    val numbers = listOf(4, 8, 15)    println(numbers.size)}
    • A3
    • B2
    • C15
    • D27
    Ver la respuesta

    Respuesta: A. 3

    size dice cuántos elementos hay en la lista, no cuánto suman.

  4. 4 · Elige la respuesta · nivel 2

    ¿Qué imprime este código?

    val names = listOf("ana", null, "eva")println(names.mapNotNull { it?.uppercase() })
    • A[ANA, EVA]
    • B[ANA, null, EVA]
    • C[ANA, NULL, EVA]
    • DNullPointerException
    Ver la respuesta

    Respuesta: A. [ANA, EVA]

    mapNotNull aplica la transformación y descarta los resultados null. it?.uppercase() devuelve null para el elemento null, así que desaparece.

  5. 5 · Elige la respuesta · nivel 2

    ¿Qué imprime este código?

    val words = listOf("sol", "mar", "sol", "luz")println(words.groupingBy { it }.eachCount())
    • A{sol=2, mar=1, luz=1}
    • B[sol=2, mar=1, luz=1]
    • C{mar=1, luz=1, sol=2}
    • D{sol=[sol, sol], mar=[mar], luz=[luz]}
    Ver la respuesta

    Respuesta: A. {sol=2, mar=1, luz=1}

    groupingBy crea una agrupación perezosa y eachCount cuenta los elementos de cada clave. El mapa resultante conserva el orden de primera aparición. groupBy, en cambio, guardaría las listas.

  6. 6 · Completa el hueco · nivel 2

    Completa para quedarte con los pares del 1 al 10 y elevarlos al cuadrado.

    val evens = (1..10).___ { it % 2 == 0 }.___ { it * it }
    • filter
    • map
    • forEach
    • reduce
    • also
    • takeIf
    Ver la respuesta

    Respuesta: filter · map

    val evens = (1..10).filter { it % 2 == 0 }.map { it * it }

    filter conserva los elementos que cumplen la condición y map transforma cada uno. El resultado es [4, 16, 36, 64, 100].

  7. 7 · Completa el hueco · nivel 2

    Completa para obtener los títulos de las 2 canciones más escuchadas.

    data class Song(val title: String, val plays: Int)val songs = listOf(Song("A", 10), Song("B", 50), Song("C", 30))println(songs.___ { it.plays }.___(2).map { it.title })
    • sortedByDescending
    • take
    • sortedBy
    • first
    • limit
    • orderBy
    Ver la respuesta

    Respuesta: sortedByDescending · take

    data class Song(val title: String, val plays: Int)val songs = listOf(Song("A", 10), Song("B", 50), Song("C", 30))println(songs.sortedByDescending { it.plays }.take(2).map { it.title })

    sortedByDescending ordena por la clave de mayor a menor y take(n) se queda con los n primeros. limit es el nombre en los streams de Java.

Más temas de Kotlin

Ver toda la ruta de Kotlin