Menu
Coddy logo textTech

Raggruppare i valori

Fa parte della sezione Logica e flusso del percorso Kotlin di Coddy. Lezione 38 di 63.

groupBy restituisce una mappa le cui chiavi sono prodotte da una lambda e i cui valori sono liste di elementi corrispondenti. Ogni gruppo conserva l'ordine originale dei suoi elementi. Accedere a un gruppo mancante restituisce null, proprio come per le altre ricerche nella mappa.

Dentro di main:

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

Il gruppo di lunghezza uno contiene a e b nel loro ordine originale.

groupBy memorizza ogni elemento corrispondente in una lista associata alla chiave calcolata.

challenge icon

Sfida

Medio

Completa wordsOfLength con i parametri words: List<String>, length: Int. Raggruppa le parole in base alla lunghezza, quindi restituisci il gruppo richiesto nell'ordine originale. Restituisci una lista vuota se il gruppo non è presente.

A meno che sopra non siano indicati limiti più rigorosi, le raccolte contengono al massimo 100 elementi a ogni livello e gli argomenti interi e i valori interi delle raccolte sono compresi tra -1000 e 1000. Il testo fornito per l'analisi può includere rappresentazioni non valide o fuori intervallo, come descritto.

Restituisci un valore di tipo List<String>. Mantieni il codice di input/output fornito. Legge gli argomenti scalari uno per riga; una lista inizia con il suo conteggio seguito dagli elementi, mentre una mappa inizia con il conteggio delle voci seguito da ciascuna chiave e valore. Le liste annidate ripetono il formato conteggio-elementi per ogni riga. Il main fornito stampa il valore restituito seguito da un carattere di nuova riga. Le liste usano il formato standard di Kotlin tra parentesi quadre; non stampare etichette aggiuntive.

Provalo tu

fun wordsOfLength(words: List<String>, length: Int): List<String> {
    // Scrivi qui la tua soluzione.
    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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Kotlin