Java 9 verbesserte Stream API

Java 9 新特性Neue Funktionen in Java 9

Die in Java 9 verbesserte Stream-API fügte einige praktische Methoden hinzu, um die Stream-Verarbeitung zu erleichtern und Collectors zum Schreiben komplexer Abfragen zu verwenden.

Java 9 fügte mehrere Methoden zu Stream hinzu: dropWhile, takeWhile, ofNullable, und fügte eine überladene Methode für die iterate-Methode hinzu.

takeWhile-Methode

Syntax

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

Die Methode takeWhile() nimmt ein Prädikat als Argument entgegen und gibt eine Teilmenge des angegebenen Stream zurück, bis die Prädikatsanweisung zum ersten Mal false zurückgibt. Wenn der erste Wert die Prädikatbedingung nicht erfüllt, wird ein leerer Stream zurückgegeben.

In einem geordneten Stream gibt takeWhile so viele Elemente wie möglich vom Anfang zurück; in einem ungeordneten Stream gibt takeWhile eine Teilmenge von Elementen vom Anfang zurück, die die Predicate-Anforderungen erfüllen.

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); } }

Im obigen Beispiel stoppt die Methode takeWhile die Schleifenausgabe, wenn sie auf eine leere Zeichenkette trifft, und die Ausgabe der Ausführung ist:

abc

dropWhile-Methode

Syntax

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

Die dropWhile-Methode ist das Gegenteil von takeWhile. Sie nimmt ein Prädikat als Argument und gibt eine Teilmenge des gegebenen Streams nur so lange zurück, bis die Prädikatsanweisung erstmals false zurückgibt.

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); } }

Im obigen Beispiel beginnt die dropWhile-Methode mit der Schleifenausgabe, wenn sie auf eine leere Zeichenkette stößt, und die Ausführungsausgabe ist:

ef

iterate-Methode

Syntax

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

Die Methode ermöglicht das Erstellen eines sequenziellen (möglicherweise unendlichen) Streams mithilfe eines anfänglichen Seed-Werts und durch iteratives Anwenden der angegebenen next-Methode. Wenn das angegebene hasNext-Prädikat false zurückgibt, stoppt die Iteration.

Beispiel

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); } }

Die Ausführungsausgabe ist:

3
6
9

ofNullable-Methode

Syntax

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

Die ofNullable-Methode kann NullPointerExceptions verhindern und Nullwerte vermeiden, indem sie den Stream überprüft.

Wenn das angegebene Element nicht null ist, wird ein Element entgegengenommen und ein Stream mit einem einzigen Element erzeugt; wenn das Element null ist, wird ein leerer Stream zurückgegeben.

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); } }

Die Ausführungsausgabe ist:

1
0

Java 9 新特性Neue Funktionen in Java 9

Andere Erweiterungen