groupBy ve partition
- Kotlin kursu
- Orta seviye
- Ders 66/116
- 5 dk
groupBy ve partition ile gruplama öğrenirsin.
groupBy ve partition
groupBy elemanları bir anahtara göre gruplar ve Map<K, List<V>> döndürür. Örnek: people.groupBy { it.city } şehre göre gruplar; her şehir bir anahtar olur. Aynı anahtara sahip elemanlar aynı listede toplanır.
partition listeyi bir koşula göre ikiye böler ve bir Pair döndürür: ilk liste koşulu sağlayan, ikinci sağlamayan elemanları içerir. Örnek: val (adults, kids) = people.partition { it.age >= 18 }. Bu, tek bir koşulla iki gruba ayırmanın kısa yoludur.
groupBy ve partition örnekleri
groupBy sonucunda her anahtar bir listeyle eşleşir. people.groupBy { it.city } çağrısından sonra result["İstanbul"] İstanbul'daki kişileri verir. Anahtar sayısı benzersiz şehir sayısı kadardır.
partition sonucu destructuring ile ayrılır: val (yes, no) = list.partition { ... }. İlk değişken koşulu sağlayanları, ikinci sağlamayanları alır. Bu, filter iki kez çağırmaktan daha verimlidir çünkü liste tek geçişte bölünür.
Uygulama groupBy ve partition uygula
data class Person(val name: String, val city: String, val age: Int) tanımla. listOf(Person("Ayşe", "İstanbul", 30), Person("Ali", "Ankara", 15)) oluştur. groupBy { it.city } ile şehre göre grupla ve println("Şehirler: ${byCity.keys}") yaz. partition { it.age >= 18 } ile yetişkinleri bul ve println("Yetişkin: ${adults.size}") yaz.
Başlangıç kodu
data class Person(val name: String, val city: String, val age: Int)
fun main() {
val people = listOf(Person("Ayşe", "İstanbul", 30), Person("Ali", "Ankara", 15))
// groupBy ile şehre göre grupla, partition ile yaşa göre böl ve yazdır
}Örnek çözüm
data class Person(val name: String, val city: String, val age: Int)
fun main() {
val people = listOf(Person("Ayşe", "İstanbul", 30), Person("Ali", "Ankara", 15))
val byCity = people.groupBy { it.city }
val (adults, kids) = people.partition { it.age >= 18 }
println("Şehirler: ${byCity.keys}")
println("Yetişkin: ${adults.size}")
}Beklenen çıktı
Şehirler: [İstanbul, Ankara] Yetişkin: 1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 groupBy ve partition eşle
| Kavram | Anlamı |
|---|---|
groupBy |
Anahtara göre grupla |
partition |
İkiye böl |
Pair |
İki listeden oluşan |
Map<K, List<V>> |
Grup sonucu |
2 partition ne döndürür?
- Tek liste
- Pair iki liste Doğru cevap
- Map
- Set
Açıklama: partition eşleşen ve eşleşmeyen iki listeden Pair üretir.
3 groupBy çağrısını tamamla
people.____ { it.city }
people.groupBy { it.city }
Açıklama: groupBy şehre göre gruplar.