Java 9 – Stream-API-Verbesserungen
Streams wurden in Java eingeführt, um Entwicklern dabei zu helfen, Aggregatoperationen aus einer Folge von Objekten durchzuführen. Mit Java 9 werden einige weitere Methoden hinzugefügt, um Streams besser zu machen.
takeWhile(Prädikatschnittstelle)
Syntax
default Stream<T> takeWhile(Predicate<? super T> predicate)
Die takeWhile-Methode übernimmt alle Werte, bis das Prädikat „false“ zurückgibt. Es gibt im Falle eines geordneten Stroms einen Strom zurück, der aus dem längsten Präfix von Elementen besteht, die diesem Strom entnommen wurden und mit dem angegebenen Prädikat übereinstimmen.
Beispiel
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); } }
Ausgabe
takeWhile-Methode nimmt alle a-, b- und c-Werte, und sobald der String leer ist, wird die Ausführung beendet.
abc
dropWhile(Prädikatschnittstelle)
Syntax
default Stream<T> dropWhile(Predicate<? super T> predicate)
dropWhile-Methode verwirft alle Werte am Anfang, bis das Prädikat wahr zurückgibt. Es gibt im Falle eines geordneten Stroms einen Strom zurück, der aus den verbleibenden Elementen dieses Stroms besteht, nachdem das längste Präfix von Elementen, die mit dem angegebenen Prädikat übereinstimmen, gelöscht wurde.
Beispiel
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); } }
Ausgabe
Die dropWhile-Methode löscht a-, b- und c-Werte, und sobald der String leer ist, nimmt sie alle Werte.
ef ef
wiederholen
Syntax
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
iterate-Methode hat jetzt das hasNext-Prädikat als Parameter, der die Schleife stoppt, sobald das hasNext-Prädikat falsch zurückgibt.
Beispiel
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); } }
Ausgabe
3 6 9
Nullable
Syntax
static <T> Stream<T> ofNullable(T t)
ofNullable-Methode wird eingeführt, um NullPointerExceptions zu verhindern und Nullprüfungen für Streams zu vermeiden. Diese Methode gibt einen sequentiellen Stream zurück, der ein einzelnes Element enthält, wenn es nicht null ist, andernfalls gibt es einen leeren Stream zurück.
Beispiel
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); } }
Ausgabe
1 0
Java