CodeBlanks Logo Icon CodeBlanks

sortedBy ve sortedWith

sortedBy ve sortedWith ile sıralama öğrenirsin.

sortedBy ve sortedWith

sortedBy bir seçici alana göre artan sıralama yapar ve yeni liste döndürür. Örnek: people.sortedBy { it.age } yaş küçükten büyüğe sıralar. Orijinal liste değişmez; sonuç ayrı bir listedir.

sortedWith bir Comparator alır ve daha karmaşık sıralama sağlar. compareBy ile birden fazla alan tanımlanabilir: people.sortedWith(compareBy({ it.name }, { it.age })). Azalan sıralama için reverse() veya sortedByDescending kullanılır.

sortedWith ve compareBy

sortedWith birden fazla alana göre sıralama gerektiğinde kullanılır. compareBy fonksiyonu sıralama anahtarlarını sırayla değerlendirir: önce ilk alan eşitse ikinci alana bakılır. Örnek: people.sortedWith(compareBy({ it.team }, { it.name })) önce takıma, sonra ada göre sıralar.

Azalan sıralama için compareByDescending veya bir Comparator döndüren reverseOrder() kullanılır. sortedBy basit tek alan, sortedWith çok alan veya özel karşılaştırma içindir. Kararlı sıralama: eşit elemanlar önceki sırasını korur.

Uygulama sortedBy ve sortedWith uygula

data class Person(val name: String, val age: Int) tanımla. listOf(Person("Ayşe", 30), Person("Ali", 20), Person("Mara", 25)) oluştur. sortedBy { it.age } ile yaş sırala ve forEach { println(it) } ile yazdır. Sonra sortedWith(compareBy { it.name }) ile ad sırala.

Başlangıç kodu

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

fun main() {
    val people = listOf(Person("Ayşe", 30), Person("Ali", 20), Person("Mara", 25))
    // sortedBy ile yaş sırala, forEach ile yazdır; sortedWith ile ad sırala
}

Örnek çözüm

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

fun main() {
    val people = listOf(Person("Ayşe", 30), Person("Ali", 20), Person("Mara", 25))
    val byAge = people.sortedBy { it.age }
    byAge.forEach { println(it) }
    val byName = people.sortedWith(compareBy { it.name })
}

Beklenen çıktı

Person(name=Ali, age=20)
Person(name=Mara, age=25)
Person(name=Ayşe, age=30)

Soru ve cevaplar

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

1 sortedBy ne döndürür?

  • Eskiyi değiştirir
  • Sıralama yapmaz
  • Yeni sıralı liste Doğru cevap
  • Ters sıralı liste

Açıklama: sortedBy yeni bir sıralı liste üretir.

2 sortedBy çağrısını tamamla

Soru
people.____ { it.age }
Cevap
people.sortedBy { it.age }

Açıklama: sortedBy yaş göre sıralar.

3 sıralama ifadelerini eşle

Kavram Anlamı
sortedBy Tek alana göre
sortedWith Comparator alır
compareBy Alan sırası
descending() Azalan

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