Sobes.tech
Junior — Middle

Stream API'deki terminal ve non-terminal işlemler fonksiyonları ve amaçları açısından nasıl farklılık gösterir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Stream API'de terminal ve non-terminal işlemler amaçları ve davranışları açısından farklılık gösterir:

  • Non-terminal işlemler (intermediate) — yeni bir akış döndürür ve dönüşüm zinciri kurmaya olanak tanır. Tembeldirler, yani hemen yürütülmezler, sadece terminal bir işlem çağrıldığında çalıştırılırlar. Örnekler: filter(), map(), sorted(), distinct().

  • Terminal işlemler (terminal) — işlem zincirini tamamlar ve veri işleme başlatır. Sonuç döndürürler (örneğin, koleksiyon, sayı, void). Terminal bir işlemden sonra akış kapatılır ve tekrar kullanılamaz. Örnekler: collect(), forEach(), reduce(), count().

Örnek:

List<String> result = list.stream()
    .filter(s -> s.startsWith("A"))   // terminal değil
    .map(String::toUpperCase)           // terminal değil
    .collect(Collectors.toList());     // terminal

Burada filtreleme ve dönüşüm hemen yapılmaz, sadece collect() çağrıldığında başlar ve işlem tamamlanıp sonuç listesi döndürülür.