Junior
Java'da lambda ifadeleri nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Lambda ifadesi, anonim fonksiyon için kısa bir biçimdir ve fonksiyonel arayüz metodlarını uygular.
Yapı: (parametreler) -> { ifade gövdesi }.
| Kısım | Açıklama | Örnekler |
|---|---|---|
parametreler |
Parametre listesi, boş olabilir. Tipler belirtilmeyebilir (çıkarılır). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Ok operatörü (arrow operator). Parametreleri gövdeden ayırır. | -> |
ifade gövdesi |
Lambda gövdesi. Bir ifade veya kod bloğu olabilir. | x * x<br>{ System.out.println(x); } |
Kullanım örnekleri:
-
Fonksiyonel arayüzlerin uygulanması:
import java.util.function.Consumer; // Geleneksel anonim sınıf kullanımı Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Geleneksel anonim sınıf"); // Lambda ifadesi kullanımı Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Lambda ifadesi"); -
Streams API ile çalışma:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Çift sayıları filtreleme (lambda ile) List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Çıktı: [2, 4] // Sayıların karelerini alma List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Çıktı: [1, 4, 9, 16, 25]
Avantajlar:
- Anonim sınıflara göre kodu kısaltır.
- Basit işlemler için okunabilirliği artırır.
- Streams API ve diğer fonksiyonel programlama API'leriyle kolay kullanım sağlar.