Android Academy · Lektion

map, filter, forEach

Transformér samlinger med lambdas.

Lektion 3 af 413 trin

map, filter, forEach er en gratis Android Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Android Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Android Academy-kurset indeholder 4 lektioner i alt.

Operationer på samlinger

Kotlin-samlinger har effektive indbyggede operationer. Tre, du kommer til at bruge hele tiden, er map, filter og forEach.

De lader dig transformere, udvælge og gennemløbe data på én tydelig linje i stedet for at skrive løkker manuelt.

map transformerer hvert element

map opretter en ny liste ved at anvende en transformation på hvert element.

Inde i lambdaen henviser it til det aktuelle element. Den oprindelige liste ændres ikke.

fun main() {
    val nums = listOf(1, 2, 3)
    val doubled = nums.map { it * 2 }
    println(doubled)
}

map kan ændre typer

Resultatet af map behøver ikke at have samme type som inputtet.

Her omdanner vi en liste med navne til en liste med deres længder.

fun main() {
    val names = listOf("Ada", "Linus")
    val lengths = names.map { it.length }
    println(lengths)
}

filter beholder match

filter returnerer en ny liste, der kun indeholder de elementer, som lambdaen returnerer true for.

Her beholder vi kun de lige tal.

fun main() {
    val nums = listOf(1, 2, 3, 4, 5, 6)
    val evens = nums.filter { it % 2 == 0 }
    println(evens)
}

filter på strenge

Betingelsen kan være hvad som helst, der returnerer en boolesk værdi. Her beholder vi kun de lange ord.

Elementer, der ikke består afprøvningen, udelades ganske enkelt af resultatet.

fun main() {
    val words = listOf("hi", "hello", "hey", "howdy")
    val long = words.filter { it.length > 3 }
    println(long)
}

forEach udfører en handling

forEach udfører en kodeblok for hvert element, men opbygger ikke en ny liste.

Brug den til sideeffekter som udskrivning eller logning.

fun main() {
    val fruits = listOf("apple", "banana")
    fruits.forEach { println("Fruit: $it") }
}

map kontra forEach

map returnerer en transformeret liste, så brug den, når du har brug for et resultat.

forEach returnerer ikke noget nyttigt, så brug den kun til handlinger. Når du vælger den rigtige, bliver koden tydeligere.

Sammenkædning af operationer

Disse operationer returnerer samlinger, så du kan kæde dem sammen.

Læs fra venstre mod højre: Først filter, derefter map på de resterende elementer.

fun main() {
    val nums = listOf(1, 2, 3, 4, 5, 6)
    val result = nums.filter { it % 2 == 0 }.map { it * 10 }
    println(result)
}

Navngivning af parameteren

I stedet for it kan du navngive lambdaens parameter for at gøre koden tydeligere, især når operationer kædes sammen.

Brug en pil: { name -> ... }.

fun main() {
    val prices = listOf(10, 25, 5)
    val withTax = prices.map { price -> price + price / 10 }
    println(withTax)
}

forEachIndexed

Når du også har brug for positionen, skal du bruge forEachIndexed. Den sender indekset og elementet med.

På den måde slipper du for selv at holde styr på en tæller.

fun main() {
    val tasks = listOf("eat", "code", "rest")
    tasks.forEachIndexed { i, task ->
        println("$i: $task")
    }
}

Kombinationer til praktisk arbejde

Tilsammen udtrykker disse operationer databehandlingsforløb på en enkel måde. Her finder vi den samlede længde af de lange navne.

Det kan næsten læses som almindelig tekst.

fun main() {
    val names = listOf("Ada", "Grace", "Bo")
    val total = names.filter { it.length > 2 }.map { it.length }.sum()
    println(total)
}

Hurtig afprøvning

Afprøv din forståelse af operationer på samlinger.

Opsummering

map transformerer hvert element til en ny liste, filter beholder elementer, der matcher en betingelse, og forEach udfører en handling for hvert element.

De returnerer samlinger, så kæd dem sammen for at opbygge læselige databehandlingsforløb.

Gratis at komme i gang

Lær Kotlin med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
36
Lektioner
152

Ofte stillede spørgsmål

Er lektionen “map, filter, forEach” gratis?

Ja — alle 3 lektioner i læringssporet Android Academy, inklusive “map, filter, forEach”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Android Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “map, filter, forEach”?

Transformér samlinger med lambdas. Du øver dig i Android Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Android Academy?

Der kræves ingen tidligere erfaring. Android Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “map, filter, forEach”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Android Academy-lektion?

Ja. Alle Android Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Lister og mutable lister
  2. Maps og sets
  3. map, filter, forEach
  4. Lambdas og higher-order-funktioner
← Tilbage til Android Academy