Kotlin
Ö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.
Örnek çözümü göster
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)
}
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.
Örnek çözümü göster
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)
}
Kendini test et
-
Her elemanı dönüştüren fonksiyon hangisi?
Cevabı göster
map — map her elemana dönüşüm uygular.
-
zincir kombinasyonlarını eşle
- map+filter+fold
- Dönüştür-seç-topla
- groupBy+mapValues
- Grupla-say
- sortedBy+forEach
- Sırala-yazdır
- partition+first
- Böl-seç
Sıradaki ders: by