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