Kotlin Academy · Oppitunti

Ryhmittely ja osiointi

Järjestä tiedot

Oppitunti 2/413 vaihetta

Ryhmittely ja osiointi on ilmainen Kotlin Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. 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 Kotlin Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Tietojen järjestäminen

Joskus kokoelma on jaettava luokkiin. Kotlin tarjoaa groupBy-funktion alkioiden ryhmittelemiseen avaimen perusteella ja partition-funktion kokoelman jakamiseen kahdeksi listaksi ehdon perusteella.

partition-funktio

partition jakaa kokoelman kahden listan Pair-pariksi: predikaattia vastaaviin alkioihin ja alkioihin, jotka eivät vastaa sitä.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)
    val (even, odd) = numbers.partition { it % 2 == 0 }
    println("Even: $even")
    println("Odd: $odd")
}

Pairin hajottaminen

Koska partition palauttaa Pair-parin, voitte hajottaa sen suoraan kahdeksi nimetyksi muuttujaksi, kuten yllä näytetään. Voitte käyttää myös ominaisuuksia .first ja .second.

fun main() {
    val result = listOf(10, -5, 3, -8).partition { it >= 0 }
    println(result.first)
    println(result.second)
}

groupBy-funktio

groupBy luo Map-olion, jossa kunkin avaimen tuottaa valitsin ja arvona on luettelo alkioista, joilla on sama avain.

fun main() {
    val words = listOf("apple", "banana", "avocado", "cherry")
    val byFirstLetter = words.groupBy { it.first() }
    println(byFirstLetter)
}

Ryhmittely lasketun avaimen perusteella

Avain voi olla mikä tahansa laskettu arvo, kuten merkkijonon pituus tai jakojäännös.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6, 7)
    val byRemainder = numbers.groupBy { it % 3 }
    println(byRemainder)
}

groupBy arvon muunnoksen kanssa

groupBy hyväksyy toisen lambdan, joka muuntaa kunkin arvon ennen sen sijoittamista ryhmään.

fun main() {
    val words = listOf("red", "rose", "blue", "berry")
    val grouped = groupExample(words)
    println(grouped)
}

fun groupExample(words: List<String>) =
    words.groupBy({ it.first() }, { it.uppercase() })

Ryhmien läpikäynti

Koska groupBy palauttaa Map-olion, voitte käydä sen alkiot läpi ja käsitellä jokaisen ryhmän.

fun main() {
    val animals = listOf("cat", "cow", "dog", "duck")
    val groups = animals.groupBy { it.first() }
    for ((letter, list) in groups) {
        println("$letter -> $list")
    }
}

Laskeminen groupingBy-funktiolla

Kun haluatte laskea alkioiden määrät avaimittain, groupingBy-funktion ja sen jälkeen kutsutun eachCount-funktion yhdistelmä on tehokas ja selkeästi luettava.

fun main() {
    val letters = listOf("a", "b", "a", "c", "b", "a")
    val counts = letters.groupingBy { it }.eachCount()
    println(counts)
}

partition verrattuna filter-funktioon

Kun tarvitsette vain ehdon täyttävät alkiot, käyttäkää filter-funktiota. Kun tarvitsette SEKÄ ehdon täyttävät että sen täyttämättä jättävät alkiot, partition käsittelee kokoelman yhdellä läpikäynnillä ja palauttaa molemmat listat.

fun main() {
    val ages = listOf(15, 22, 17, 30, 12)
    val (adults, minors) = ages.partition { it >= 18 }
    println("Adults: $adults, Minors: $minors")
}

groupBy- ja partition-funktion valitseminen

Käyttäkää partition-funktiota täsmälleen kahden kyllä–ei-ehdon määrittämän ryhmän muodostamiseen. Käyttäkää groupBy-funktiota, kun ryhmiä voi olla useita ja ne määritetään jonkin ominaisuuden perusteella.

Käytännön ryhmittely

Ryhmittely ja osiointi korvaavat pitkät manuaaliset silmukat kartoilla ja listoilla. Ne ilmaisevat tarkoituksen selkeästi ja vähentävät kirjanpitovirheitä.

Pikatarkistus

Mitä partition palauttaa?

Kertaus

Opitte jakamaan kokoelman ehdon perusteella kahdeksi listaksi partition-funktiolla ja ryhmittelemään alkiot avaimen perusteella Map-olioon groupBy-funktiolla. Lisäksi opitte laskemaan määriä yhdistelmällä groupingBy().eachCount(). Seuraavaksi opitte supistamaan kokoelmia yhdeksi arvoksi aggregointifunktioilla.

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
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Ryhmittely ja osiointi” ilmainen?

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

Mitä opin oppitunnilla ”Ryhmittely ja osiointi”?

Järjestä tiedot Harjoittelet Kotlin Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Kotlin Academy-opiskelun?

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

Kuinka kauan ”Ryhmittely ja osiointi”-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ä Kotlin Academy-oppitunnilla?

Kyllä. Jokainen Kotlin 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. Suodatus ja mappaus
  2. Ryhmittely ja osiointi
  3. Aggregointi
  4. Yhdistäminen ja litistäminen
← Takaisin: Kotlin Academy