Menu
Coddy logo textTech

Asociar por una clave

Parte de la sección Lógica y flujo del Journey de Kotlin de Coddy. Lección 39 de 63.

associateBy crea un mapa desde una clave calculada hasta un elemento original. Si las claves se repiten, gana el último elemento correspondiente a esa clave. Usa groupBy cuando deban conservarse todos los elementos coincidentes; usa associateBy cuando se pretenda conservar un único elemento más reciente por clave.

Dentro de main:

val latest = listOf("a", "to", "b").associateBy { it.length }
println(latest[1])

Tanto a como b tienen la clave uno, así que b reemplaza a para esa clave.

associateBy conserva el último elemento cuando las claves calculadas entran en conflicto.

challenge icon

Desafío

Intermedio

Completa lastOfLength con los parámetros words: List<String>, length: Int. Usa associateBy con la longitud de la palabra como clave. Devuelve la última palabra de entrada de la longitud solicitada, o missing si no existe ninguna.

A menos que se indiquen límites más estrictos arriba, las colecciones contienen como máximo 100 elementos en cada nivel, y los argumentos enteros y los valores enteros de las colecciones están entre -1000 y 1000. El texto proporcionado para el análisis puede incluir representaciones no válidas o fuera de rango, según se describe.

Devuelve un valor de tipo String. Conserva el código de entrada/salida proporcionado. Lee los argumentos escalares, uno por línea; una lista comienza con su cantidad, seguida de sus elementos, y un mapa comienza con su cantidad de entradas, seguida de cada clave y valor. Las listas anidadas repiten el formato de cantidad y elementos para cada fila. El main proporcionado imprime el valor devuelto seguido de un salto de línea. Las listas utilizan el formato estándar entre corchetes de Kotlin; no imprimas etiquetas adicionales.

Pruébalo tú mismo

fun lastOfLength(words: List<String>, length: Int): String {
    // Escribe tu solución aquí.
    return ""
}
fun main() {
    val wordsCount = readln().toInt()
    val words = mutableListOf<String>()
    for (i0 in 0 until wordsCount) {
        val wordsItem = readLine().orEmpty()
        words.add(wordsItem)
    }
    val length = readln().toInt()
    println(lastOfLength(words, length))
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Playground de Kotlin