CodeBlanks Logo Icon CodeBlanks

Özet - İleri koleksiyonlar

map, fold ve groupBy'ı birleştirerek bir satış raporu yazarsın.

Özet - İleri koleksiyonlar

Bu grupta beş temel koleksiyon aracı öğrendin. map dönüştürür, filter seçer. fold başlangıç değerli, reduce ilk elemanlı birleştirir. groupBy anahtara göre gruplar, partition ikiye böler.

sortedBy tek alana, sortedWith Comparator ile çok alana sıralar. associate Map üretir, flatMap iç içe yapıları düzleştirir. Bu araçları zincirleyerek veriyi dönüştür, seç, birleştir ve grupla. Her fonksiyon yeni bir koleksiyon döndürür; orijinal değişmez.

Doğru aracı seçmek

İşe göre aracı seç: dönüştürme map, seçme filter, tek değer üretme fold veya reduce. Gruplama groupBy, ikiye bölme partition, sıralama sortedBy veya sortedWith.

Map üretmek için associate, iç içe listeleri açmak için flatMap kullanılır. Bu fonksiyonları zincirlemek güçlü veri işlem hattı (pipeline) kurar. Önce map ile dönüştür, filter ile daralt, fold ile topla; ya da groupBy ardından mapValues ile grup başına özet çıkar.

Uygulama map, filter ve fold zinciri

val numbers = listOf(1, 2, 3, 4, 5) tanımla. map { it * it } ile kareleri al, filter { it > 5 } ile beşten büyükleri seç, fold(0) { acc, n -> acc + n } ile topla. Sonucu println ile yazdır.

Başlangıç kodu

Main.kt
fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)
    // map kareleri, filter beşten büyük, fold toplam; println ile yazdır
}

Örnek çözüm

Main.kt
fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)
    val result = numbers.map { it * it }.filter { it > 5 }.fold(0) { acc, n -> acc + n }
    println(result)
}

Beklenen çıktı

50

Uygulama groupBy ve mapValues ile özet

data class Person(val name: String, val team: String) tanımla. listOf(Person("Ayşe", "A"), Person("Ali", "B"), Person("Mara", "A")) oluştur. groupBy { it.team } ile takıma göre grupla, mapValues { it.value.size } ile her takımın kişi sayısını hesapla ve println(counts) ile yazdır.

Başlangıç kodu

Main.kt
data class Person(val name: String, val team: String)

fun main() {
    val people = listOf(Person("Ayşe", "A"), Person("Ali", "B"), Person("Mara", "A"))
    // groupBy ile takıma göre grupla, mapValues ile say, println ile yazdır
}

Örnek çözüm

Main.kt
data class Person(val name: String, val team: String)

fun main() {
    val people = listOf(Person("Ayşe", "A"), Person("Ali", "B"), Person("Mara", "A"))
    val counts = people.groupBy { it.team }.mapValues { it.value.size }
    println(counts)
}

Beklenen çıktı

{A=2, B=1}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Her elemanı dönüştüren fonksiyon hangisi?

  • map Doğru cevap
  • fold
  • filter
  • groupBy

Açıklama: map her elemana dönüşüm uygular.

2 zincir kombinasyonlarını eşle

Kavram Anlamı
map+filter+fold Dönüştür-seç-topla
groupBy+mapValues Grupla-say
sortedBy+forEach Sırala-yazdır
partition+first Böl-seç

Orta seviye bölümündeki tüm dersler