CodeBlanks Logo Icon CodeBlanks

stream()

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

Main.java
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

Main.java
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

Soru
Stream<String> s = names.____();
Cevap
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

Orta seviye bölümündeki tüm dersler