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.