Menu
Coddy logo textTech

Associare in base a una chiave

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

associateBy crea una mappa da una chiave calcolata a un elemento originale. Se le chiavi si ripetono, prevale l'ultimo elemento per quella chiave. Usa groupBy quando devono essere conservati tutti gli elementi corrispondenti; usa associateBy quando si intende mantenere un solo elemento più recente per chiave.

All'interno di main:

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

Sia a che b hanno la chiave uno, quindi b sostituisce a per quella chiave.

associateBy mantiene l’ultimo elemento quando le chiavi calcolate entrano in conflitto.

challenge icon

Sfida

Medio

Completa lastOfLength con i parametri words: List<String>, length: Int. Usa associateBy con la lunghezza della parola come chiave. Restituisci l'ultima parola dell'input della lunghezza richiesta, oppure missing se non ne esiste nessuna.

A meno che non siano indicati limiti più restrittivi sopra, 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 String. Mantieni il codice di input/output fornito. Legge gli argomenti scalari, uno per riga; una lista inizia con il suo conteggio seguito dai suoi elementi e una mappa inizia con il conteggio delle sue voci seguito da ciascuna chiave e valore. Le liste annidate ripetono il formato conteggio ed 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 lastOfLength(words: List<String>, length: Int): String {
    // Scrivi qui la tua soluzione.
    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 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