Android Academy · Oppitunti

Kotlinin kokoelmat

Käsitelkää List-, Set- ja Map-kokoelmia. Käyttäkää funktionaalisia operaattoreita, kuten filter, map, sortedBy, forEach, find, any ja all, sekä ketjuttakaa toimintoja tiiviisiin datamuunnoksiin.

Oppitunti 1/611 vaihetta

Kotlinin kokoelmat on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/6. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 6 oppituntia.

Kokoelmien yleiskatsaus

Kotlinin standardikirjasto tarjoaa kolme pääasiallista kokoelmatyyppiä:

  • List — järjestetty alkioiden jono (voi sisältää kaksoiskappaleita)
  • Set — yksilölliset alkiot, ei tiettyä järjestystä
  • Map — avain–arvo-parit, avaimet ovat yksilöllisiä

Jokaisesta tyypistä on muuttumaton versio (vain luku) ja muuttuva versio (voidaan muokata).

Listat: listOf ja mutableListOf

Luokaa listoja tehdasfunktioilla:

fun main() {
    // Immutable — cannot add/remove items
    val fruits = listOf("Apple", "Banana", "Cherry")
    println(fruits[0])       // Apple
    println(fruits.size)     // 3

    // Mutable — can modify
    val scores = mutableListOf(10, 20, 30)
    scores.add(40)
    scores.removeAt(0)       // remove index 0
    println(scores)          // [20, 30, 40]
}

Map: avain–arvo-parit

Luokaa Map-rakenteita funktioilla mapOf ja mutableMapOf. Käyttäkää arvoja avaimen avulla:

fun main() {
    val capitals = mapOf(
        "Turkey" to "Ankara",
        "Germany" to "Berlin",
        "Japan" to "Tokyo"
    )

    println(capitals["Turkey"])      // Ankara
    println(capitals["France"])      // null (not found)
    println(capitals.getOrDefault("France", "Unknown")) // Unknown

    // Iterate
    for ((country, city) in capitals) {
        println("$country -> $city")
    }
}

filter — alkioiden valitseminen

filter palauttaa uuden listan, joka sisältää vain ehdon täyttävät alkiot:

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8)

    val evens = numbers.filter { it % 2 == 0 }
    println(evens)   // [2, 4, 6, 8]

    val names = listOf("Alice", "Bob", "Anna", "Charlie")
    val aNames = names.filter { it.startsWith("A") }
    println(aNames)  // [Alice, Anna]
}

map — alkioiden muuntaminen

map muuntaa jokaisen alkion ja palauttaa uuden listan:

fun main() {
    val prices = listOf(10.0, 20.0, 30.0)

    // Apply 10% tax
    val withTax = prices.map { it * 1.1 }
    println(withTax)  // [11.0, 22.0, 33.0]

    val names = listOf("alice", "bob", "carol")
    val upper = names.map { it.uppercase() }
    println(upper)    // [ALICE, BOB, CAROL]
}

sortedBy ja sortedByDescending

Järjestäkää lista ominaisuuden perusteella:

data class Student(val name: String, val grade: Int)

fun main() {
    val students = listOf(
        Student("Alice", 88),
        Student("Bob", 95),
        Student("Carol", 72)
    )

    val byGrade = students.sortedByDescending { it.grade }
    for (s in byGrade) println("${s.name}: ${s.grade}")
    // Bob: 95
    // Alice: 88
    // Carol: 72
}

forEach ja find

Kaksi muuta hyödyllistä kokoelmatoimintoa:

  • forEach — käy alkiot läpi muodostamatta tulosta
  • find — palauttaa ensimmäisen ehdon täyttävän alkion tai arvon null

Toimintojen ketjuttaminen

Ketjuttakaa useita toimintoja tietojen tiiviitä muunnoksia varten:

data class Product(val name: String, val price: Double, val inStock: Boolean)

fun main() {
    val products = listOf(
        Product("Laptop", 999.0, true),
        Product("Mouse", 29.0, false),
        Product("Keyboard", 79.0, true),
        Product("Monitor", 349.0, true)
    )

    // In-stock products under $500, sorted by price
    val result = products
        .filter { it.inStock && it.price < 500 }
        .sortedBy { it.price }
        .map { "${it.name}: ${it.price}" }

    result.forEach { println(it) }
}

any, all ja count

Koostefunktioita nopeiden vastausten saamiseen:

  • any { condition } — true, jos vähintään yksi alkio täyttää ehdon
  • all { condition } — true, jos jokainen alkio täyttää ehdon
  • count { condition } — ehdon täyttävien alkioiden määrä
  • sumOf { it.price } — numeerisen ominaisuuden summa

Pikatarkistus

Mitä funktiota käyttäisitte saadaksenne listasta vain ehdon täyttävät alkiot?

Kertaus: Kotlinin kokoelmat

Osaatte nyt käsitellä tietoja Kotlinissa tehokkaasti:

  • listOf / mutableListOf, mapOf / mutableMapOf
  • filter — valitsee ehdon täyttävät alkiot
  • map — muuntaa alkiot
  • sortedBy / sortedByDescending
  • Ketjuttakaa toimintoja selkeiksi ja helposti luettaviksi tietoputkiksi

Seuraavaksi: näyttäkää listoja näytöllä RecyclerView-komponentilla.

Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
36
Oppitunnit
152

Usein kysytyt kysymykset

Onko oppitunti ”Kotlinin kokoelmat” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Kotlinin kokoelmat”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 6 oppituntia.

Mitä opin oppitunnilla ”Kotlinin kokoelmat”?

Käsitelkää List-, Set- ja Map-kokoelmia. Käyttäkää funktionaalisia operaattoreita, kuten filter, map, sortedBy, forEach, find, any ja all, sekä ketjuttakaa toimintoja tiiviisiin datamuunnoksiin. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/6.

Kuinka kauan ”Kotlinin kokoelmat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Android Academy-oppitunnilla?

Kyllä. Jokainen Android Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Kotlinin kokoelmat
  2. RecyclerViewn perusteet
  3. RecyclerView'n napsautustapahtumat
  4. SharedPreferences
  5. DataStore Preferences
  6. Adapterit ja DiffUtil
← Takaisin: Android Academy