Java'da Streams
Bir listeden stream() ile hattı açın, öğeleri tutun veya değiştirin, sonra yazdırın. Pipe.java içinde public sınıf Pipe'ı tutun, java.util.ArrayList içe aktarın, "oak" ve "pine" saklayın ve names.stream().filter(n -> n.startsWith("o")).forEach(n -> System.out.println(n)); çağırın. javac Pipe.java ile derleyin ve java Pipe çalıştırın. Ekran oak göstermelidir. İkinci demo map kullanır; ekran OAK, sonra PINE gösterir. İsteğe bağlı Records'u sonraki sayfaya bırakın. Bu ders stream hattıdır; listede düz forEach veya Generics get(0) demosu değildir.
Filtre: eşleşen tek kelime
Pipe.java dosyasını açın. Public sınıf adını Pipe tutun. Streams hikâyesini gömüyorsa kalan yalnızca-Cue lambda demolarını, kalan Bin Generics yazdırmalarını, kalan Program Arguments Flag çalıştırmalarını ve kalan Box Scanner istemlerini silin. Program yazı beklememeli ve başlatma kelimeleri gerektirmemelidir.
Üste import ekleyin:
import java.util.ArrayList;
Pipe.main içinde iki kelimeli tipli liste kurun, sonra o ile başlayan kelimeleri tutan bir stream başlatın:
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.add("pine");
names.stream().filter(n -> n.startsWith("o")).forEach(n -> System.out.println(n));
stream() hattı açar. filter, lambda'sı true dönen öğeleri tutar. forEach tutulan her öğeyi yazdırır. "oak" o ile başlar. "pine" başlamaz. Ekran oak gösterir.
import java.util.ArrayList;
public class Pipe {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.add("pine");
names.stream().filter(n -> n.startsWith("o")).forEach(n -> System.out.println(n));
}
}
Pipe.java dosyasının bulunduğu klasörde javac Pipe.java çalıştırın. Süslü parantezler ve noktalı virgüller uyduğunda javac kendi satırını yazmaz. Sonra java Pipe çalıştırın — java Pipe.java değil. Adın Pipe ile uyması için tek public sınıf tutun.
Çalıştırmayı bir kez izleyin. Java Pipe.main'de başlar. Listede "oak" ve "pine" vardır. stream() başlar. filter "oak" tutar. forEach oak yazdırır. Hiçbir şey iki kelimeyi yazdırmaz. Hiçbir şey yalnızca names.forEach çağırmaz stream() olmadan. Hiçbir şey args[0] okumaz.
Ekrana bakarken başlangıç kuralını söyleyin: stream() boruyu açar; filter seçer; forEach yan etki yazdırmayla biter. Bu sayfada Records demoları icat etmeyin. Records sonraki isteğe bağlı derste bekler. Bu öğretim şeklinde stream() kaldırıp filter'ın listeye asılı kalmasını beklemeyin.
Hâlâ kalan bir Cue forEach dosyasından oak sonra pine görüyorsanız Pipe'a geçin ve filter adımını tutun. javac stream reddederse liste tipinin ArrayList ve çağrının names.stream() olduğunu doğrulayın.
Map: her kelimeyi büyük harfe
Aynı public sınıf Pipe'ı tutun. Filtrelemek yerine her kelimeyi dönüştürmek için hattı değiştirin:
names.stream().map(n -> n.toUpperCase()).forEach(n -> System.out.println(n));
Listede hem "oak" hem "pine" kalsın. Yeniden javac Pipe.java derleyin ve java Pipe çalıştırın. Ekran OAK, sonra PINE gösterir. map her öğe için yeni değer döndürür. forEach bu değerleri sırayla yazdırır.
import java.util.ArrayList;
public class Pipe {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.add("pine");
names.stream().map(n -> n.toUpperCase()).forEach(n -> System.out.println(n));
}
}
Çalıştırmayı bir kez izleyin. İlk eşlenen değer OAK. İkincisi PINE. İki demoyu iki öğretim şekli olarak tutun. Önce filter'ın tek kelime tuttuğunu kanıtlayın. Sonra map'in her kelimeyi değiştirdiğini kanıtlayın. Her iki şekil import, tipli liste, stream() ve terminal forEach paylaşır.
Sonra kendi denemelerinizde filter ve map zincirlerseniz sıra önemlidir. Bu sayfa ekranı okunaklı tutmak için demoda tek ara adım bırakır.
Hat alışkanlıkları
Alışırken adımları sırayla tutun.
📊 Pipe için stream alışkanlıkları
| Adım | Çağrı | Başlangıç kontrolü |
|---|---|---|
| Başlat | names.stream() |
listeden hattı açar |
| Bazılarını tut | filter(n -> ...) |
lambda tutmak için true döner |
| Her birini değiştir | map(n -> ...) |
lambda yeni değeri döner |
| Yazdırmayı bitir | forEach(n -> System.out.println(n)) |
yazdıran terminal adım |
stream() atla |
bu şekilde listede filter yok |
filter veya map öncesine stream() koy |
Streams yalnızca Lambda değil ve Records değil
Lambda listede doğrudan forEach öğretti. Streams önce stream() koyar; son forEach öncesinde filter veya map yapabilirsiniz. Records sonraki isteğe bağlı sayfada kompakt veri tipi tanıtır. Bugün bu üç görevi tek başlangıç dosyasında karıştırmayın.
filter'ın tuttuğu oak hâlâ hat boyunca akan bir liste öğesidir. Flag'den args[0] değildir. Kalan bir Cue dosyası filtresiz her öğeyi yazdırıyorsa bunu geçmiş bırakın ve Pipe'ın stream().filter satırını tutun.
Bu sayfada stream() olmadan filter ve map çağrıları öğretim şekli değildir. Terminal forEach olmadan hat yazdırmaz. Her demoda borunun iki ucunu birlikte tutun. Records sözdizimini o derse kadar bu sayfadan uzak tutun; isteğe bağlı yolda kompakt tipler başlığı görmüş olsanız bile.
Records öncesi klasör kontrolleri
Başarılı derlemeden sonra klasörü listeleyin. Pipe.java ve Pipe.class birlikte görünmeli. Kaynağı düzenleyin, kaydedin, javac Pipe.java çalıştırın, sonra java Pipe. map'e geçtikten sonra derlemeyi atlarsanız eski .class eski filter ekranını gösterebilir.
javac yinelenen public sınıflardan şikâyet ederse yalnızca Pipe public kalsın. Filter demosunda ekran hem oak hem pine gösteriyorsa startsWith("o") kontrolü eksik olabilir — filter lambda'sını geri koyun. Hiçbir şey yazdırmıyorsa add'in stream() öncesinde çalıştığını doğrulayın.
Bu sayfada tüm hattın yerine Cue'nun yalnızca liste forEach'ini yapıştırmayın. Bin get(0)'ı Pipe'a yapıştırmayın. İsteğe bağlı streams işi stream artı bir ara adım artı forEach'tir.
İsteğe bağlı Records öncesi
Public sınıf Pipe, ArrayList import, "oak" ve "pine" ekleme, names.stream().filter(n -> n.startsWith("o")).forEach(...), oak görme, sonra names.stream().map(n -> n.toUpperCase()).forEach(...), OAK sonra PINE görme tutulabilir. javac Pipe.java derleyin ve java Pipe çalıştırın. Tablo başlangıç, filter, map ve bitişi ayırır. Sonraki isteğe bağlı sayfa Records'tur.
Net bir streams çifti için Pipe demolarını tutun. Hat alışırken Cue lambda dosyalarını bu sayfadan uzak tutun. Hat alışırken Bin Generics dosyalarını bu sayfadan uzak tutun. Records işini o derse kadar bu sayfadan uzak tutun. Bu alışkanlıklar devam etmeden önceki kontrol noktasıdır. Filter ekranı oak veya map ekranı OAK sonra PINE gösterdiğinde Streams bu dersin işini yapmıştır ve isteğe bağlı yola devam ederseniz Records'a hazırsınız.
Klasörde son tur: bir public Pipe, import mevcut, tipli ArrayList<String>, filter veya map öncesi stream(), terminal forEach, Scanner beklemesi yok, başlatma kelimesi gerekmez. Açık tuttuğunuz demoda bir kez daha javac Pipe.java ve java Pipe çalıştırın. Ekran hâlâ oak veya OAK sonra PINE gösteriyorsa Streams şekli sağlamdır ve kurs sonraki sayfada isteğe bağlı Records'a geçebilir. Her okumada tek net hat alışkanlığı tutun; her tur aynı haritayı öğretsin.
🧠 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