Java 9 - Améliorations de l'API de flux
Les flux ont été introduits en Java pour aider les développeurs à effectuer des opérations d'agrégation à partir d'une séquence d'objets. Avec Java 9, quelques méthodes supplémentaires sont ajoutées pour améliorer les flux.
takeWhile (interface de prédicat)
Syntaxe
default Stream<T> takeWhile(Predicate<? super T> predicate)
La méthode takeWhile prend toutes les valeurs jusqu'à ce que le prédicat renvoie false. Il renvoie, en cas de flux ordonné, un flux constitué du plus long préfixe d'éléments extraits de ce flux correspondant au prédicat donné.
Exemple
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); } }
Sortie
La méthode takeWhile prend toutes les valeurs a, b et c, puis une fois que la chaîne est vide, elle s'arrête de s'exécuter.
abc
dropWhile (interface de prédicat)
Syntaxe
default Stream<T> dropWhile(Predicate<? super T> predicate)
La méthode dropWhile rejette toutes les valeurs au début jusqu'à ce que le prédicat renvoie true. Il renvoie, en cas de flux ordonné, un flux composé des éléments restants de ce flux après avoir supprimé le plus long préfixe d'éléments correspondant au prédicat donné.
Exemple
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); } }
Sortie
La méthode dropWhile supprime les valeurs a, b et c, puis une fois que la chaîne est vide, elle prend toutes les valeurs.
ef ef
itérer
Syntaxe
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
itérer la méthode a maintenant le prédicat hasNext comme paramètre qui arrête la boucle une fois que le prédicat hasNext renvoie false.
Exemple
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); } }
Sortie
3 6 9
deNullable
Syntaxe
static <T> Stream<T> ofNullable(T t)
La méthode ofNullable est introduite pour empêcher NullPointerExceptions et pour éviter les vérifications nulles pour les flux. Cette méthode renvoie un flux séquentiel contenant un seul élément, s'il n'est pas nul, sinon renvoie un flux vide.
Exemple
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); } }
Sortie
1 0
Java