crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
Lambda İfadeleri: Kodda Minimalizm
1. Lambda Nedir? (Sözdizimi)
Lambda ifadesi, bir metodun gövdesini bir değişkene atamak veya bir metoda parametre olarak geçmek gibidir. Temel yapısı şöyledir:
(parametreler) -> { gövde }
Parametreler: Metodun aldığı girdiler.
Ok İşareti (->): Parametreler ile gövdeyi birbirinden ayırır.
Gövde: Yapılacak işlem.
2. Öncesi ve Sonrası: Anonim Sınıftan Lambda'ya
Diyelim ki bir listeyi sıralamak istiyoruz. Eskiden "Anonim Sınıf" (Anonymous Inner Class) kullanmak zorundaydık:
Java:
// ESKİ YÖNTEM (Anonim Sınıf)
Collections.sort(isimler, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return a.compareTo(b);
}
});
// YENİ YÖNTEM (Lambda İfadesi)
isimler.sort((a, b) -> a.compareTo(b));
Aradaki farkı görüyor musunuz? 6 satırlık karmaşık yapı, tek bir anlaşılır satıra düştü.
3. Functional Interfaces (Fonksiyonel Arayüzler)
Lambda ifadeleri her yerde kullanılamaz. Sadece içinde tek bir abstract (soyut) metot bulunan arayüzlerde kullanılabilir. Bunlara "Functional Interface" denir. Java 8 ile gelen en yaygın olanları şunlardır:
| Arayüz | Metot İmzası | Amacı |
|---|---|---|
| Predicate<T> | boolean test(T t) | Filtreleme (true/false döner). |
| Consumer<T> | void accept(T t) | Veriyi tüketir (ekrana yazma vb.). |
| Function<T, R> | R apply(T t) | Veriyi dönüştürür (T alır, R döner). |
| Supplier<T> | T get() | Veri üretir (parametre almaz). |
4. Lambda'nın En Güçlü Olduğu Yer: forEach
Koleksiyonlar üzerinde gezinmek artık çok daha kolay. Bir listeyi ekrana yazdırmak için döngü kurmanıza gerek yok:
Java:
List<String> diller = Arrays.asList("Java", "Python", "C#");
// Klasik for-each
for (String dil : diller) {
System.out.println(dil);
}
// Lambda ile forEach
diller.forEach(dil -> System.out.println(dil));
// Hatta Metot Referansı (::) ile daha da kısa:
diller.forEach(System.out::println);
5. Lambda Kullanmanın Avantajları
[]Okunabilirlik: Gereksiz "boilerplate" (kalıplaşmış) kodlardan kurtulursunuz.
[]Hız: Geliştirme süreci kısalır.
[]Paralel Programlama: Lambda'lar Stream API ile birleştiğinde verilerin paralel işlenmesini çok kolaylaştırır.
[]Bakım Kolaylığı: Kod daha modüler ve temiz hale gelir.
Sonuç
Lambda ifadeleri sadece bir "yazım kolaylığı" (syntactic sugar) değildir; Java'da problem çözme yaklaşımımızı değiştiren bir araçtır. Eğer Stream API kullanıyorsanız, Lambda'lar sizin sağ kolunuz olacaktır. Modern Java dünyasında Lambda bilmemek, eksik bir geliştirici olmak demektir.