Java'da Lambda
Oku ile forEach'e kısa bir eylem verin. Cue.java içinde public sınıf Cue'yi tutun, import java.util.ArrayList; ekleyin, "oak"ı tipli listede saklayın ve names.forEach(n -> System.out.println(n)); çağırın. javac Cue.java ile derleyin ve java Cue çalıştırın. Ekran oak göstermelidir. İkinci demo "pine" ekler; ekran oak, sonra pine gösterir. İsteğe bağlı Streams'i sonraki sayfaya bırakın. Bu ders, forEach'e verilen lambda'dır; Generics get(0) demosu veya komut satırı args değildir.
Tek öğe, tek lambda yazdırması
Cue.java dosyasını açın. Public sınıf adını Cue tutun. Lambda hikâyesini gölgeliyorsa kalan Bin Generics demolarını, kalan Program Arguments Flag çalıştırmalarını, Box içindeki kalan Scanner istemlerini ve Shelf geçmişini silin. Program yazı beklememeli ve başlatma kelimeleri gerektirmemelidir.
Üste import ekleyin:
import java.util.ArrayList;
Cue.main içinde tipli bir liste kurun, bir kelime ekleyin ve forEach'e bir lambda verin:
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.forEach(n -> System.out.println(n));
n -> System.out.println(n) kısmı lambda'dır. n, tek öğe için parametre adıdır. -> oku, o öğe için çalışan gövdeyi gösterir. forEach bu gövdeyi "oak" için bir kez çağırır. Ekran oak gösterir.
import java.util.ArrayList;
public class Cue {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.forEach(n -> System.out.println(n));
}
}
Cue.java dosyasının bulunduğu klasörden javac Cue.java çalıştırın. Süslü parantezler ve noktalı virgüller uyumlu olduğunda javac kendi satırını yazmaz. Sonra java Cue çalıştırın — java Cue.java değil. Adın Cue ile eşleşmesi için tek public sınıf tutun.
Çalıştırmayı bir kez izleyin. Java Cue.main ile başlar. Liste "oak" tutar. forEach lambda'yı alır. İlk (ve tek) öğe için n "oak"dır ve println oak yazar. Bu öğretim şeklinde kimse get(0) çağırmaz. Kimse Integer Bin demosundan 3 yazdırmaz. Kimse args[0] okumaz.
Ekranı izlerken başlangıç kuralını söyleyin: forEach listeyi gezer; lambda öğe başına eylemdir; ok parametreyi gövdeden ayırır. Bu sayfada Streams boru hatları icat etmeyin. Streams sonraki isteğe bağlı derste bekler. Bu öğretim dosyasında lambda'yı tam adlandırılmış yöntemle değiştirmeyin — ok biçimini tutun.
Hâlâ kalan bir Bin dosyasında yalnızca names.get(0) ile oak görüyorsanız Cue'ye geçin ve forEach satırını tutun. javac oku reddederse -> yazdığınızı ve lambda'nın forEach(...) içinde olduğunu kontrol edin.
İki öğe, aynı lambda
Aynı public sınıf Cue'yi tutun. forEach'ten önce ikinci kelimeyi ekleyin:
names.add("oak");
names.add("pine");
names.forEach(n -> System.out.println(n));
Yeniden javac Cue.java ile derleyin ve java Cue çalıştırın. Ekran oak, sonra pine gösterir. forEach lambda'yı sırayla her öğe için bir kez çalıştırır. Lambda gövdesi değişmez. Yalnızca liste uzunluğu değişti.
import java.util.ArrayList;
public class Cue {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.add("pine");
names.forEach(n -> System.out.println(n));
}
}
Çalıştırmayı bir kez izleyin. İlk çağrı: n "oak", yazdır oak. İkinci çağrı: n "pine", yazdır pine. İki demoyu iki öğretim şekli olarak tutun. Önce tek lambda yazdırmasını kanıtlayın. Sonra aynı lambda'yı iki öğede kanıtlayın. Her iki şekil import, tipli liste ve n -> System.out.println(n) paylaşır.
forEach yerine println(names) ile tüm listeyi yazdırırsanız köşeli parantez ve virgül görürsünüz — bu farklı bir alışkanlıktır. Bu sayfa lambda ile öğe başına tek yazdırmayı tutar.
Lambda yalnızca Generics değil ve Streams değil
Generics ArrayList<String> içinde öğe türünü adlandırdı. Lambda, bu sayfada ayrı adlandırılmış yöntem yazmadan forEach'e kısa eylem verir. Streams sonraki isteğe bağlı sayfada daha fazla liste adımı zincirler. Bugün bu üç işi tek başlangıç dosyasında karıştırmayın.
Buradaki oak, forEach'in ziyaret ettiği liste öğesidir. Flag'den args[0] veya Scanner cevabı değildir. Kalan bir Bin dosyası hâlâ yalnızca get(0) yazdırıyorsa onu geçmiş bırakın ve Cue'nin forEach satırını tutun. Kalan bir Flag dosyası hâlâ java Flag oak istiyorsa o başlatma alışkanlığını bir kenara bırakın ve düz java Cue çalıştırın.
Ok olmadan javac eylemi lambda olarak işleyemez. forEach olmadan lambda'nın bu öğretim şeklinde çalışacağı yer yoktur. Pratikte her iki parçayı birlikte tutun. O derse kadar .stream().map gibi Streams sözdizimini bu sayfanın dışında tutun; başka bir başlıkta Stream kelimesini görmüş olsanız bile.
Streams öncesi klasör kontrolü
Başarılı derlemeden sonra klasörü listeleyin. Cue.java ve Cue.class birlikte görünmelidir. Kaynağı düzenleyin, kaydedin, javac Cue.java çalıştırın, sonra java Cue. "pine" ekledikten sonra derlemeyi atlarsanız eski .class eski tek satırlık ekranı gösterebilir.
javac yinelenen public sınıftan şikâyet ederse yalnızca Cue public kalsın. Ekran tek satırda [oak, pine] gösteriyorsa liste nesnesini yazdırdınız — lambda içindeki println ile forEach'e dönün. Hiçbir şey yazılmıyorsa add'in forEach'ten önce çalıştığını doğrulayın.
Bu sayfada lambda yerine Bin get(0) yapıştırmayın. Run komutuna Flag başlatma kelimeleri yapıştırmayın. İsteğe bağlı lambda işi ok gövdeli forEach'tir.
İsteğe bağlı Streams öncesi
Public sınıf Cue, import ArrayList, "oak" ekleme, names.forEach(n -> System.out.println(n)); çağırma, oak görme, sonra "pine" ekleme ve oak sonra pine görme adımlarını tutabilirsiniz. javac Cue.java ile derleyin ve java Cue çalıştırın. Sonraki isteğe bağlı sayfa Streams'tir.
Açık bir lambda çifti için Cue demolarını tutun. forEach pratiğinde Bin Generics dosyalarını bu sayfanın dışında tutun. forEach pratiğinde Flag Program Arguments dosyalarını bu sayfanın dışında tutun. Streams çalışmasını o derse kadar bu sayfanın dışında tutun. Bu alışkanlıklar devam etmeden önce kontrol noktasıdır. Tek kelimelik ekran oak veya iki kelimelik ekran oak sonra pine gösterdiğinde Lambda bu dersin işini yapmıştır ve isteğe bağlı yola devam ederseniz Streams'e hazırsınız.
Klasörde son geçiş: tek public Cue, import yerinde, tipli ArrayList<String>, n -> System.out.println(n) ile forEach, Scanner beklemesi yok, başlatma kelimesi gerekmez. Açık tuttuğunuz demoda bir kez daha javac Cue.java ve java Cue çalıştırın. Ekran hâlâ oak veya oak sonra pine gösteriyorsa Lambda şekli sağlamdır ve kurs sonraki sayfada isteğe bağlı Streams'e geçebilir. Her okumada aynı haritayı öğretmek için öğe başına tek net forEach alışkanlığını tercih edin.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek