Java 8 Stream Filter Non-Terminal Operation

Posted by dogukanhan on May 11, 2019 · 1 min read

Java 8 Stream api ile birlikte gelen Filter Non- Terminal veya intermediate operasyondur. Filter source üzerinde eleme işlemi yapmaktadır. Verilen koşula uygun olmayan kaynak elemanları bir sonraki pipeline’ye dahil olmazlar. Böylelikle kaynak aslında bir süzgeçten geçirilmiş olur.

Filter kullanımında parametre olarak Java Util Function içerisinde yer alan Predicate interface istemektedir. Predicate boolean değer döndürek ve tek bir parametre alan Java Util Function Fonksiyonudur.

Predicate Örneği

Verilen sayının çift değer olup olmadığını kontrol eden predicate fonksiyon örneği aşağıda yer almaktadır.

IntPredicate ciftmi = (x)->x%2==0;

Filter İle Birlikte Kullanımı

IntPredicate ciftmi = (x) - > x % 2 == 0;

IntStream it = IntStream.range(0, 100);

IntStream ciftSayilar = it = it.filter(ciftmi);

ciftSayilar.forEach(System.out::println); // Ekrana Yazdiralim

0 ile 100 arasında ki tamsayı kaynağımızı, çift sayı kaynağına çevirmiş olduk. Aşağıda tek bir satırda bu yapının kullanımı yer almaktadır. Nesne ataması yapmadan tek satırda işlemlerimizi sonlandırabiliriz.

IntStream.range(0, 100)
    .filter(x - > x % 2 == 0)
    .forEach(System.out::println);

Kaynak: https://www.mkyong.com/java8/java-8-streams-filter-examples/