Lambda İfadeleri: Daha Kısa ve Okunabilir Java Kodları Yazmak

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üzMetot İ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.
 
Geri
Üst