Java 9 Stream API-verbeteringen: takeWhile, dropWhile, iterate, ofNullable
Streams werden in Java geïntroduceerd om ontwikkelaars te helpen aggregate operaties uit te voeren op een reeks objecten. Met Java 9 zijn er extra methodes toegevoegd om streams krachtiger te maken.
takeWhile(Predicate Interface)
Syntaxis
default Stream<T> takeWhile(Predicate<? super T> predicate)
takeWhile neemt alle waarden zolang de predicate true retourneert. Bij een geordende stream levert het een stream op bestaande uit het langste prefix van elementen die voldoen aan de predicate.
Voorbeeld
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);
}
}
Uitvoer
abc
takeWhile neemt a, b, c, stopt bij de lege string.
dropWhile(Predicate Interface)
Syntaxis
default Stream<T> dropWhile(Predicate<? super T> predicate)
dropWhile gooit alle beginwaarden weg zolang de predicate true is. Bij een geordende stream levert het de overgebleven elementen na het weglaten van het langste prefix dat voldoet aan de predicate.
Voorbeeld
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);
}
}
Uitvoer
ef ef
dropWhile dropt a, b, c, neemt daarna alle waarden.
iterate
Syntaxis
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
iterate heeft nu een hasNext-predicate als parameter die de lus stopt zodra de predicate false retourneert.
Voorbeeld
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);
}
}
Uitvoer
3 6 9
ofNullable
Syntaxis
static <T> Stream<T> ofNullable(T t)
ofNullable voorkomt NullPointerException en null-checks voor streams. Retourneert een sequentiële stream met één element als niet-null, anders een lege stream.
Voorbeeld
import java.util.stream.Stream;
public class Tester {
public static void main(String[] args) {
long count = Stream.ofNullable(100).count();
System.out.println(count); // 1
count = Stream.ofNullable(null).count();
System.out.println(count); // 0
}
}
Uitvoer
1 0
Java
- Java-operators beheersen: typen, syntax en praktische voorbeelden
- Java-commentaar: typen, gebruik en best practices
- Java Enhanced For-lus beheersen: syntax, voorbeelden en best practices
- Java Strings beheersen: aanmaken, methodes en best practices
- Java interfaces meesteren: concepten, implementatie en best practices
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java Try-with-resources meesteren: automatische resource management uitgelegd
- Java Annotaties uitgelegd: typen, plaatsing en praktische voorbeelden
- Java Assertions: een praktische gids voor bugdetectie en codebetrouwbaarheid
- Java 9 (JDK 9) – Belangrijkste kenmerken & voordelen
- Java 9 Process API: Belangrijkste verbeteringen & nieuwe features