Java 9 API Stream améliorée

Java 9 新特性Nouveautés de Java 9

L'API Stream améliorée de Java 9 a ajouté des méthodes pratiques pour faciliter le traitement des flux et utiliser des collecteurs pour écrire des requêtes complexes.

Java 9 a ajouté plusieurs méthodes à Stream : dropWhile, takeWhile, ofNullable, et a ajouté une méthode surchargée pour la méthode iterate.

méthode takeWhile

Syntaxe

default Stream<T> takeWhile(Predicate<? super T> predicate)

La méthode takeWhile() prend un prédicat en argument et renvoie un sous-ensemble du Stream donné jusqu'à ce que l'instruction du prédicat retourne false pour la première fois. Si la première valeur ne satisfait pas la condition du prédicat, un Stream vide sera renvoyé.

Dans un Stream ordonné, takeWhile renvoie autant d'éléments que possible depuis le début ; dans un Stream non ordonné, takeWhile renvoie un sous-ensemble d'éléments depuis le début qui répondent aux exigences du Predicate.

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); } }

Dans l'exemple ci-dessus, la méthode takeWhile arrête la sortie de la boucle lorsqu'elle rencontre une chaîne vide, et la sortie d'exécution est :

abc

méthode dropWhile

Syntaxe

default Stream<T> dropWhile(Predicate<? super T> predicate)

La méthode dropWhile est l'opposé de takeWhile. Elle prend un prédicat en argument et renvoie un sous-ensemble du Stream donné uniquement jusqu'à ce que l'instruction du prédicat renvoie false pour la première fois.

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); } }

Dans l'exemple ci-dessus, la méthode dropWhile commence la sortie de boucle lorsqu'elle rencontre une chaîne vide, et la sortie d'exécution est :

ef

méthode iterate

Syntaxe

static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)

La méthode permet de créer un stream séquentiel (éventuellement infini) à l'aide d'une valeur d'amorçage initiale, et en appliquant de manière itérative la méthode next spécifiée. Lorsque le prédicat hasNext spécifié renvoie false, l'itération s'arrête.

Exemple

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); } }

La sortie d'exécution est :

3
6
9

méthode ofNullable

Syntaxe

static <T> Stream<T> ofNullable(T t)

La méthode ofNullable peut empêcher les NullPointerExceptions et éviter les valeurs null en vérifiant le flux.

Si l'élément spécifié n'est pas null, elle récupère un élément et génère un stream à un seul élément ; si l'élément est null, elle renvoie un stream 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); } }

La sortie d'exécution est :

1
0

Java 9 新特性Nouveautés de Java 9

Autres extensions