Java 9 - Akış API İyileştirmeleri

Geliştiricilerin bir dizi nesneden toplu işlemler gerçekleştirmesine yardımcı olmak için Java'da akışlar tanıtıldı. Java 9 ile, akışları daha iyi hale getirmek için birkaç yöntem daha eklenmiştir.

takeWhile (Predicate Interface)

Sözdizimi

default Stream<T> takeWhile(Predicate<? super T> predicate)

takeWhile yöntemi, yüklem yanlış döndürene kadar tüm değerleri alır. Sıralı akış durumunda, verilen yüklemle eşleşen bu akıştan alınan öğelerin en uzun önekinden oluşan bir akış döndürür.

Misal

import java.util.stream.Stream;

public class Tester {
   public static void main(String[] args) {
      Stream.of("a","b","c","","e","f").takeWhile(s->!s.isEmpty())
         .forEach(System.out::print);		 
   } 
}

Çıktı

takeWhame yöntemi tüm a, b ve c değerlerini alırken, dize boş olduğunda, yürütmeyi durdurdu.

abc

dropWhile (Predicate Interface)

Sözdizimi

default Stream<T> dropWhile(Predicate<? super T> predicate)

dropWhile yöntemi, yüklem true dönene kadar başlangıçtaki tüm değerleri atar. Sıralı akış durumunda, verilen yüklemle eşleşen öğelerin en uzun önekini bıraktıktan sonra bu akışın kalan öğelerinden oluşan bir akış döndürür.

Misal

import java.util.stream.Stream;

public class Tester {
   public static void main(String[] args) {
      Stream.of("a","b","c","","e","f").dropWhile(s-> !s.isEmpty())
         .forEach(System.out::print);
      
      System.out.println();
      Stream.of("a","b","c","","e","","f").dropWhile(s-> !s.isEmpty())
         .forEach(System.out::print);
   } 
}

Çıktı

dropWhame yöntemi a, b ve c değerlerini düşürürken, dize boş olduğunda tüm değerleri alır.

ef
ef

yinelemek

Sözdizimi

static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)

iterate yöntemi artık hasNext yüklemine sahip bir parametre olarak hasNext koşulu false döndürdüğünde döngüyü durdurur.

Misal

import java.util.stream.IntStream;

public class Tester {
   public static void main(String[] args) {
      IntStream.iterate(3, x -> x < 10, x -> x+ 3).forEach(System.out::println);
   } 
}

Çıktı

3
6
9

ofNullable

Sözdizimi

static <T> Stream<T> ofNullable(T t)

ofNullable yöntemi, NullPointerExceptions'ı önlemek ve akışlar için null denetimlerden kaçınmak için tanıtıldı. Bu yöntem, boş değilse tek öğe içeren sıralı bir Akış döndürür, aksi takdirde boş bir Akış döndürür.

Misal

import java.util.stream.Stream;

public class Tester {
   public static void main(String[] args) {
      long count = Stream.ofNullable(100).count();
      System.out.println(count);
  
      count = Stream.ofNullable(null).count();
      System.out.println(count);
   } 
}

Çıktı

1
0