CodeBlanks Logo Icon CodeBlanks

groupBy ve partition

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

Main.kt
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

Main.kt
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

Soru
people.____ { it.city }
Cevap
people.groupBy { it.city }

Açıklama: groupBy şehre göre gruplar.

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