Menu
Coddy logo textTech

Agrupar valores

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

groupBy devuelve un mapa cuyas claves son producidas por una lambda y cuyos valores son listas de elementos coincidentes. Cada grupo conserva el orden original de sus miembros. Acceder a un grupo inexistente devuelve null, al igual que otras búsquedas en mapas.

Dentro de main:

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

El grupo de longitud uno contiene a y b en su orden original.

groupBy almacena cada elemento coincidente en una lista para su clave calculada.

challenge icon

Desafío

Intermedio

Completa wordsOfLength con los parámetros words: List<String>, length: Int. Agrupa las palabras por longitud y después devuelve el grupo solicitado en el orden original. Devuelve una lista vacía si el grupo no existe.

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, tal como se describe.

Devuelve un valor de tipo List<String>. Conserva el código de entrada/salida proporcionado. Este lee los argumentos escalares, uno por línea; una lista comienza con su cantidad, seguida de sus elementos, y un mapa comienza con la cantidad de sus 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 wordsOfLength(words: List<String>, length: Int): List<String> {
    // Escribe tu solución aquí.
    return emptyList()
}
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(wordsOfLength(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