stream()
- Java kursu
- Orta seviye
- Ders 106/116
- 5 dk
stream() ile koleksiyondan akış oluşturmayı öğrenirsin.
Stream<T> arayüzü
Stream<T> bir koleksiyonun üzerinde sıralı ya da paralel işlemler yapmayı sağlayan arayüzdür. list.stream() çağrısı bir Stream döndürür; koleksiyonun kendisini değiştirmez.
Stream işlemleri ikiye ayrılır: ara (intermediate) işlemler yeni Stream döndürür ve tembel (lazy) çalışır; terminal işlemler akışı tüketir ve sonuç üretir. Bir Stream yalnızca bir kez tüketilebilir; ikinci kullanım IllegalStateException fırlatır.
Tembellik ve tek kullanım
Ara işlemler hemen çalışmaz; yalnızca bir terminal işlemi çağrılınca akış başlar. Bu lazy evaluation olarak bilinir. list.stream().filter(x -> x > 0) tek başına bir şey yapmaz; .count() gibi bir terminal eklenirse işlem gerçekleşir.
Bir Stream tüketildikten sonra tekrar kullanılamaz. Yeni akış gerekirse koleksiyondan tekrar stream() alınır. Bu koşul, akışın kaynağından bağımsız olarak geçerlidir.
Uygulama Stream ile say
List<String> names = new ArrayList<>(); tanımla; "Ayşe", "Alex", "Mehmet" ekle. long count = names.stream().count(); ile eleman sayısını hesapla. System.out.println(count); ile yazdır.
Başlangıç kodu
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// List<String> tanımla, üç isim ekle, stream().count() ile say, yazdır
}
}Örnek çözüm
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Ayşe");
names.add("Alex");
names.add("Mehmet");
long count = names.stream().count();
System.out.println(count);
}
}Beklenen çıktı
3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 list.stream() ne döndürür?
- Yeni bir List
- Bir Iterator
- Boş bir dizi
- Bir Stream<T> Doğru cevap
Açıklama: stream() bir Stream<T> döndürür; orijinal liste değişmez.
2 Stream çağrısını tamamla
Stream<String> s = names.____();
Stream<String> s = names.stream();
Açıklama: stream() metodu List'ten bir Stream döndürür.
3 Stream kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
stream() |
Akış başlatır |
intermediate |
Yeni Stream döndürür |
terminal |
Akışı tüketir |
lazy |
Tembel değerlendirme |