Java 9 Stream API Yenilikler

Java Stream API’ye eklenen yeni metodlar:

Stream.takeWhile()

Bir Stream’den okuma yapılırken belirtilen koşula uymayana kadar veriler alınır. Koşula uymaan bir durum olduğunda okuma işlemi durur.

List<Integer> numbers = List.of(4,8,12,34,55,12,4);

numbers.stream().takeWhile(n-> n % 2 == 0).forEach(System::out::println);

// çıktı => 4 8 12 34

12 ve 4 sayılarıda 2 ye bölünebilir ama 2 ye bölünemeyen 55 sayısından sonra daha okuma yapılmaz.

Stream.dropWhile()

Stream.takeWhile() metodunun tam tersidir. Bir Stream’den okuma yapılırken belirtile koşula ilk uymayan yerden sonrasını döndürür.

List<Integer> numbers = List.of(4,8,12,34,55,12,4);

numbers.stream().dropWhile(n-> n % 2 == 0).forEach(System::out::println);

// 55 12 4

55 sayısı 2 ye bölünmediği için o ve ondan sonraki elemanlar döndürülür.

Stream.ofNullable()

Stream.ofNullable("Example").forEach(System::out::println);
// Example

Stream.ofNullable(null).forEach(System::out::println);

Stream.iterate()

Stream API iterate metoduna sahiptir. Bu metod verilen koşula uygun Stream oluşturur. Örnek kullanımı:

Stream.iterate(1, i -> i+1);

// 1,2,3,4,5,...

İstenirse limit metodu kullanılarak üretilecek eleman sayısı sınırlanabilir.

Stream.iterate(1, i -> i+1).limit(5).forEach(System::out::println);

// 1 2 3 4 5

limit metodu bir yere kadar iyi fakat bazı durumlarda belli bir koşula göre durulması istenebilir. Java 9 ile koşula göre Stream oluşturma özelliği geldi.

Stream.iterate(1, i  -> i <= 5, i -> i+1).forEach(System::out::println);

// 1 2 3 4 5