Nach einem Schlüssel zuordnen
Teil des Abschnitts Logik & Ablauf der Kotlin-Journey von Coddy. Lektion 39 von 63.
associateBy erstellt eine Map aus einem berechneten Schlüssel und einem ursprünglichen Element. Wenn sich Schlüssel wiederholen, gewinnt das letzte Element für diesen Schlüssel. Verwende groupBy, wenn jedes übereinstimmende Element erhalten bleiben muss; verwende associateBy, wenn pro Schlüssel genau ein aktuelles Element vorgesehen ist.
Innerhalb von main:
val latest = listOf("a", "to", "b").associateBy { it.length }
println(latest[1])Sowohl a als auch b haben den Schlüssel eins, daher ersetzt b a für diesen Schlüssel.
associateBy behält das letzte Element bei, wenn berechnete Schlüssel kollidieren.
Aufgabe
MittelVervollständige lastOfLength mit den Parametern words: List<String> und length: Int. Verwende associateBy mit der Wortlänge als Schlüssel. Gib das letzte Eingabewort der angeforderten Länge zurück oder missing, falls keines vorhanden ist.
Sofern oben keine strengeren Grenzen angegeben sind, enthalten Sammlungen auf jeder Ebene höchstens 100 Elemente, und ganzzahlige Argumente sowie ganzzahlige Sammlungswerte liegen zwischen -1000 und 1000. Zum Parsen bereitgestellter Text kann ungültige oder außerhalb des gültigen Bereichs liegende Darstellungen wie beschrieben enthalten.
Gib einen Wert vom Typ String zurück. Behalte den bereitgestellten Eingabe-/Ausgabecode bei. Er liest skalare Argumente jeweils in einer eigenen Zeile; eine Liste beginnt mit ihrer Anzahl, gefolgt von ihren Elementen, und eine Map beginnt mit der Anzahl ihrer Einträge, gefolgt von jedem Schlüssel und Wert. Verschachtelte Listen wiederholen für jede Zeile das Format aus Anzahl und Elementen. Das bereitgestellte main gibt den Rückgabewert gefolgt von einem Zeilenumbruch aus. Listen verwenden das standardmäßige eckige Format von Kotlin; gib keine zusätzlichen Bezeichnungen aus.
Probier es selbst
fun lastOfLength(words: List<String>, length: Int): String {
// Schreibe deine Lösung hier.
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))
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Maps Teil 1
Maps erstellenSichere Maps-ZugriffeMaps aktualisierenSchlüssel prüfenRückblick – Lagerverwaltung4Verschachtelte Sammlungen
Listen von ListenZeilen durchlaufenZeilenzusammenfassungenVerschachtelte Listen abflachenRückblick – Sitzreihen7Collection-Pipelines
Transformieren mit MapWerte filternSammlungsregeln testenMit Fold akkumulierenRückblick – genehmigte Summen10Textverarbeitung
Teilen und ZusammenfügenTexte effizient erstellenTextmuster abgleichenSuchen und ErsetzenRückblick – Code bereinigen13Abschließende Herausforderungen
Herausforderung – WortanalyseHerausforderung – PunkteprüfungHerausforderung – Geteilte Vorräte2Maps Teil 2
Map-Einträge durchlaufenSchlüssel und WerteHäufigkeits-MapsVerschachtelte MapsRückblick – Häufigkeitsbericht5Projekt – Kontaktbuch
Kontakte speichernKontakte finden8Sortieren und Gruppieren
Sortieren nach einem SchlüsselVergleiche kombinierenWerte gruppierenNach einem Schlüssel zuordnenRückblick – Längen-Rangliste3Mengen und Mitgliedschaft
Mengen erstellenMengen aktualisierenMengenoperationenTeilmenge prüfenRückblick – Gäste der Veranstaltung6Funktionswerte
Lambdas schreibenFunktionstypenFunktionen übergebenErfasste VariablenRückblick – Konfigurierbare PunktzahlÜbe selbstständig: Kotlin-Playground