Java 8 Stream ile uğraşırken en çok karşılaştığımız konu operasyon ayrımı olarak da adlandırabileceğimiz terminal ve non-terminal opersyonlardır. Bu operasyonlar bizim Stream pipeline döngümüzü kontrol etmektedirler.
Terminal Operasyonlar
Terminal operasyonlar kaynak üzerinden sonuç üreten operasyonlardır. Bu operasyonun kullanılması ile birlikte Stream Pipeline döngümüz sona ermektedır. Bir Stream Pipeline döngüsünde yalnızca bir tane terminal operation bulunabilmektedir.
- toArray()
- collect()
- count()
- reduce()
- forEach()
- forEachOrdered()
- min()
- max()
- anyMatch()
- allMatch()
- noneMatch()
- findAny()
- findFirst()
Intermediate veya Non-Terminal Operasyonlar
Non terminal operasyonlar kaynak üzerinden işlem yaparlar ve bu işlem sonucunda yine işlenebilecek bir kaynak ortaya çıkmaktadır. Bu yüzden birden fazla kez kullanılabilmektedirler. Bir stream pipeline içerisinde istenildiği kadar non terminal operasyon kullanılabilmektedir.
- filter()
- map()
- flatMap()
- distinct()
- sorted()
- peek()
- limit()
- skip()
Kaynak: