Kotlin Academy · leksjon

Dataklasser i samlinger

Bruk dem i maps og sets

Leksjon 4 av 413 trinn

Dataklasser i samlinger er en gratis leksjon i Kotlin Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Kotlin Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Kotlin Academy inneholder totalt 4 leksjoner.

Dataklasser møter samlinger

Fordi dataklasser har verdibaserte equals og hashCode, fungerer de utmerket i samlinger.

Denne leksjonen viser hvordan dataklasser fungerer i lister, mengder og mapper.

Dataklasser i en liste

Lagren dataobjekter i en liste, og iterer over dem som over alle andre elementer.

Den lesbare toString-representasjonen gjør utskrift enkelt.

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("Alice", 30), User("Bob", 25))
    for (u in users) println(u)
}

contains fungerer etter verdi

Fordi equals sammenligner verdier, finner contains et likt objekt selv om det er en annen instans.

Det er ikke nødvendig å bruke nøyaktig samme referanse.

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("Alice", 30))
    println(users.contains(User("Alice", 30)))
}

Fjerne duplikater med en mengde

Mengder avviser duplikater ved hjelp av equals og hashCode.

To dataobjekter med identiske verdier regnes som samme element.

data class Point(val x: Int, val y: Int)

fun main() {
    val set = setOf(Point(1, 1), Point(1, 1), Point(2, 2))
    println(set.size)
}

Dataklasser som nøkler i mapper

En dataklasse er en utmerket map-nøkkel fordi oppslag baseres på verdilikhet.

Det er mulig å opprette et nøkkelobjekt underveis og likevel finne den lagrede verdien.

data class Coord(val x: Int, val y: Int)

fun main() {
    val grid = mapOf(Coord(0, 0) to "start", Coord(1, 1) to "goal")
    println(grid[Coord(1, 1)])
}

Dataklasser som map-verdier

Dataklasser kan selvsagt også være verdiene og modellere innholdsrike poster med en id som nøkkel.

Dette er en vanlig struktur for oppslag i minnet.

data class User(val name: String, val age: Int)

fun main() {
    val byId = mapOf(1 to User("Alice", 30))
    println(byId[1]?.name)
}

Filtrere samlinger

Kombiner dataklasser med samlingsfunksjoner som filter for å spørre etter data.

Lamb­daen får direkte tilgang til egenskapene.

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("A", 20), User("B", 40))
    val adults = users.filter { it.age >= 30 }
    println(adults)
}

Avbilde til egenskaper

Bruk map til å transformere en samling med objekter til en samling med én egenskap.

På denne måten hentes bare dataene som trengs ut.

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("Alice", 30), User("Bob", 25))
    val names = users.map { it.name }
    println(names)
}

Gruppere etter en egenskap

groupBy gjør en liste om til en map med en valgt egenskap som nøkkel.

Her grupperes brukere etter byen de bor i.

data class User(val name: String, val city: String)

fun main() {
    val users = listOf(User("A", "Paris"), User("B", "Paris"), User("C", "Rome"))
    val byCity = users.groupBy { it.city }
    println(byCity["Paris"]?.size)
}

Oppdatere elementer uforanderlig

For å oppdatere et element i en uforanderlig liste kan listen avbildes, og copy brukes på det samsvarende elementet.

Resultatet er en ny liste med ett endret objekt.

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(User("Alice", 30), User("Bob", 25))
    val updated = users.map { if (it.name == "Bob") it.copy(age = 26) else it }
    println(updated)
}

Slik henger det sammen

Dataklasser er ideelle elementer i samlinger:

  • contains og mengder fungerer etter verdi
  • De gir trygge og sammenlignbare map-nøkler
  • De passer naturlig sammen med filter, map og groupBy
  • copy muliggjør uforanderlige oppdateringer
data class User(val name: String, val age: Int)

fun main() {
    val users = setOf(User("Alice", 30), User("Alice", 30))
    println(users.size)
    println(users.map { it.name })
}

Kort kontroll

Test forståelsen av dataklasser i samlinger.

Oppsummering

Du har lært hvordan dataklasser fungerer i samlinger:

  • Verdilikhet ligger til grunn for contains, mengder og map-nøkler
  • De kan kombineres med filter, map og groupBy
  • copy støtter uforanderlige oppdateringer

Dette fullfører kurset Dataklasser og destrukturering.

Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
51
Leksjoner
203

Ofte stilte spørsmål

Er leksjonen «Dataklasser i samlinger» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Kotlin Academy, inkludert «Dataklasser i samlinger», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Kotlin Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Dataklasser i samlinger»?

Bruk dem i maps og sets Du øver på Kotlin Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Kotlin Academy?

Ingen tidligere erfaring er nødvendig. Kotlin Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Dataklasser i samlinger»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Kotlin Academy-leksjonen?

Ja. Alle Kotlin Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Deklarere dataklasser
  2. copy og equals
  3. Destrukturerende deklarasjoner
  4. Dataklasser i samlinger
← Tilbake til Kotlin Academy