Java 9 - Verbesserungen der Stream-API
In Java wurden Streams eingeführt, um Entwicklern dabei zu helfen, aggregierte Operationen aus einer Folge von Objekten auszuführen. Mit Java 9 werden nur wenige weitere Methoden hinzugefügt, um Streams zu verbessern.
takeWhile (Prädikatschnittstelle)
Syntax
default Stream<T> takeWhile(Predicate<? super T> predicate)
Die Methode takeWhile akzeptiert alle Werte, bis das Prädikat false zurückgibt. Im Fall eines geordneten Streams wird ein Stream zurückgegeben, der aus dem längsten Präfix von Elementen aus diesem Stream besteht, die 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
Die takeWhile-Methode akzeptiert alle a-, b- und c-Werte. Sobald die Zeichenfolge leer ist, wird die Ausführung beendet.
abc
dropWhile (Prädikatschnittstelle)
Syntax
default Stream<T> dropWhile(Predicate<? super T> predicate)
Die dropWhile-Methode wirft alle Werte zu Beginn weg, bis das Prädikat true zurückgibt. Bei einem geordneten Stream wird ein Stream zurückgegeben, der aus den verbleibenden Elementen dieses Streams besteht, nachdem das längste Präfix von Elementen gelöscht wurde, die dem angegebenen Prädikat entsprechen.
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 die Werte a, b und c. Sobald die Zeichenfolge leer ist, werden alle Werte verwendet.
ef
ef
iterieren
Syntax
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
Die iterierte Methode hat jetzt das Prädikat hasNext als Parameter, der die Schleife stoppt, sobald das Prädikat hasNext false 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
ofNullable
Syntax
static <T> Stream<T> ofNullable(T t)
Die Methode ofNullable wird eingeführt, um NullPointerExceptions und Nullprüfungen für Streams zu verhindern. Diese Methode gibt einen sequentiellen Stream zurück, der ein einzelnes Element enthält, wenn er nicht null ist. Andernfalls 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);
}
}
Ausgabe
1
0