filter, map und find für Collections
Wenden Sie Lambdas an, um Collections mithilfe von Standardbibliotheksfunktionen umzuwandeln und zu filtern.
filter, map und find für Collections ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Drei zentrale Funktionen
filter behält Elemente, die einem Prädikat entsprechen. map transformiert jedes Element. find gibt das erste passende Element (oder null) zurück. Zusammen decken sie den größten Teil der Verarbeitung von Collections ab.
Grundlagen von filter
filter gibt eine neue Liste zurück, die nur Elemente enthält, für die das Prädikat true ist.
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val evens = nums.filter { it % 2 == 0 }
println(evens) // [2, 4, 6]
}Grundlagen von map
map gibt eine neue Liste gleicher Größe zurück, in der jedes Element durch das Lambda transformiert wurde.
fun main() {
val nums = listOf(1, 2, 3)
val squares = nums.map { it * it }
println(squares) // [1, 4, 9]
}Grundlagen von find
find gibt das erste Element zurück, das dem Prädikat entspricht, oder null, wenn kein Element passt.
fun main() {
val words = listOf("apple", "banana", "cherry")
val match = words.find { it.startsWith("b") }
println(match) // banana
}filter und map verketten
Verbinden Sie beide mit der Punktnotation zu ausdrucksstarken Pipelines.
fun main() {
val nums = listOf(1, 2, 3, 4, 5)
val result = nums.filter { it % 2 == 1 }.map { it * 10 }
println(result) // [10, 30, 50]
}Data Classes filtern
Bei Collections mit Instanzen von Data Classes kommen filter und map besonders gut zur Geltung.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Ana", 17), User("Ben", 25), User("Cal", 31))
val adultNames = users.filter { it.age >= 18 }.map { it.name }
println(adultNames) // [Ben, Cal]
}find und first im Vergleich
find gibt einen Nullable-Wert zurück; first { ... } löst eine Ausnahme aus, wenn kein Treffer vorliegt. Verwenden Sie find für optionale Treffer.
fun main() {
val nums = listOf(1, 2, 3)
println(nums.find { it > 10 }) // null
// nums.first { it > 10 } // throws NoSuchElementException
println(nums.firstOrNull { it > 10 }) // null (alias of find)
}filterNot und filterNotNull
filterNot kehrt das Prädikat um. filterNotNull entfernt null-Einträge aus einer Liste mit Nullable-Werten.
fun main() {
val nums = listOf(1, 2, 3, 4)
println(nums.filterNot { it % 2 == 0 }) // [1, 3]
val maybe: List<String?> = listOf("a", null, "b", null, "c")
println(maybe.filterNotNull()) // [a, b, c]
}mapNotNull
mapNotNull transformiert Werte und entfernt anschließend null-Werte – praktisch beim Parsen.
fun main() {
val raw = listOf("1", "two", "3", "four")
val numbers = raw.mapNotNull { it.toIntOrNull() }
println(numbers) // [1, 3]
}Pipeline aus der Praxis
Ein kleines Beispiel, das filter, map und eine abschließende Reduktion kombiniert.
data class Product(val name: String, val price: Double, val inStock: Boolean)
fun main() {
val products = listOf(
Product("Pen", 1.0, true),
Product("Book", 12.0, false),
Product("Lamp", 25.0, true)
)
val total = products
.filter { it.inStock }
.map { it.price }
.sum()
println("Available total: $total") // 26.0
}Zwischen Operationen wählen
Verwenden Sie filter, wenn Sie eine Teilmenge benötigen, map zum Transformieren, find für einen einzelnen optionalen Treffer, und verketten Sie die Operationen bei Bedarf.
fun main() {
val words = listOf("alpha", "beta", "gamma", "delta")
println(words.filter { it.length == 5 }) // [alpha, gamma, delta]
println(words.map { it.uppercase() }) // [ALPHA, BETA, GAMMA, DELTA]
println(words.find { it.endsWith("ta") }) // beta
}Schnelltest
Welche Funktion gibt eine neue Collection zurück, deren Elemente durch ein Lambda transformiert wurden?
Zusammenfassung
filter wählt aus, map transformiert, find findet den ersten Treffer (oder null). Kombinieren Sie sie beliebig in Pipelines; verwenden Sie mapNotNull und filterNotNull, wenn Sie mit optionalen Werten arbeiten.
Häufig gestellte Fragen
Ist die Lektion „filter, map und find für Collections“ kostenlos?
Ja — der vollständige Text von „filter, map und find für Collections“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „filter, map und find für Collections“?
Wenden Sie Lambdas an, um Collections mithilfe von Standardbibliotheksfunktionen umzuwandeln und zu filtern. Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „filter, map und find für Collections“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Was ist ein Lambda? Syntax und Typen
- Lambdas an Funktionen übergeben
- it: Der implizite Parameter
- filter, map und find für Collections