sortedBy ve sortedWith
- Kotlin kursu
- Orta seviye
- Ders 67/116
- 5 dk
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
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
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
people.____ { it.age }
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 |