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