Java 9 - Verbeteringen in de Stream-API
In Java zijn streams geïntroduceerd om ontwikkelaars te helpen bij het uitvoeren van geaggregeerde bewerkingen op basis van een reeks objecten. Met Java 9 zijn er nog een paar methoden toegevoegd om streams beter te maken.
takeWhile (predicaatinterface)
Syntaxis
default Stream<T> takeWhile(Predicate<? super T> predicate)
De methode takeWhile neemt alle waarden totdat het predikaat false retourneert. Het retourneert, in het geval van een geordende stream, een stream die bestaat uit het langste voorvoegsel van elementen uit deze stream die overeenkomen met het gegeven predikaat.
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
De methode takeWhile neemt alle a-, b- en c-waarden, en zodra de tekenreeks leeg is, wordt deze niet meer uitgevoerd.
abc
dropWhile (predicaatinterface)
Syntaxis
default Stream<T> dropWhile(Predicate<? super T> predicate)
dropWhile methode gooi alle waarden aan het begin weg totdat het predikaat true retourneert. Het retourneert, in het geval van een geordende stream, een stream die bestaat uit de resterende elementen van deze stream na het verwijderen van het langste voorvoegsel van elementen die overeenkomen met het gegeven predikaat.
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
dropWhile methode laat a, b en c waarden vallen, en zodra de string leeg is, neemt het alle waarden.
ef ef
herhalen
Syntaxis
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
iterate methode heeft nu hasNext predikaat als parameter die de lus stopt zodra hasNext predikaat 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
van Nullable
Syntaxis
static <T> Stream<T> ofNullable(T t)
ofNullable-methode is geïntroduceerd om NullPointerExceptions te voorkomen en om null-controles voor streams te voorkomen. Deze methode retourneert een sequentiële Stream met een enkel element, indien niet-null, anders retourneert 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); count = Stream.ofNullable(null).count(); System.out.println(count); } }
Uitvoer
1 0
Java