Comparator ile lambda
- Java kursu
- Orta seviye
- Ders 104/116
- 5 dk
Comparator.comparing ile sıralamayı öğrenirsin.
Comparator ile lambda
Bir listeyi sıralamanın modern yolu sort'a bir Comparator lambda vermektir. names.sort((a, b) -> a.length() - b.length()); isme göre uzunluk sıralar. Comparator iki parametre alır; negatif, sıfır ya da pozitif döndürür.
Artan sıra için a - b, azalan için b - a yazılır. Daha okunaklı bir yol: Comparator.comparingInt(String::length). Bu, method reference ile bir alanı sıralama anahtarı yapar. Tersine çevirmek için .reversed() kullanılır.
Comparator.comparingInt
Comparator.comparingInt(String::length) bir alanı sıralama anahtarı yapar. Method reference String::length anahtar üreten fonksiyondur. Bu yöntem, (a, b) -> a.length() - b.length() lambdasından daha okunaklıdır.
Birden fazla anahtarla sıralama için .thenComparing kullanılır. Örneğin önce uzunluk sonra alfabe: Comparator.comparingInt(String::length).thenComparing(s -> s). Ters sıra için .reversed() tüm karşılaştırmayı tersine çevirir.
Uygulama İsimleri uzunluğa göre sırala
List<String> names = new ArrayList<>(); tanımla; "Mehmet", "Ayşe", "Alex" ekle. names.sort((a, b) -> a.length() - b.length()); ile uzunluğa göre artan sırala. names.forEach(System.out::println); ile sonucu yazdır.
Başlangıç kodu
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// List<String> tanimla, 3 isim ekle, uzunluga gore sirala, forEach ile yazdir
}
}Örnek çözüm
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Mehmet");
names.add("Ayşe");
names.add("Alex");
names.sort((a, b) -> a.length() - b.length());
names.forEach(System.out::println);
}
}Beklenen çıktı
Ayşe Alex Mehmet
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Uzunluk Comparator'u tamamla
names.sort((a, b) -> a.____() - b.length());
names.sort((a, b) -> a.length() - b.length());
Açıklama: length metodu String'in uzunluğunu verir.
2 Comparator lambda parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
(a, b) |
İki parametre |
-> |
Ok işareti |
a.length() - b.length() |
Artan sıra |
b.length() - a.length() |
Azalan sıra |
3 (a, b) -> a - b ne sıralaması yapar?
- Azalan
- Artan Doğru cevap
- Rastgele
- Karışık
Açıklama: a - b artan sıralar; küçük değer önce gelir.