English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Java 9 L'API Stream améliorée ajoute des méthodes pratiques pour faciliter le traitement des flux et utiliser les collecteurs pour écrire des requêtes complexes.
Java 9 Des méthodes ont été ajoutées pour Stream : dropWhile, takeWhile, ofNullable, et une méthode redéfinie pour iterate.
Syntax
default Stream<T> takeWhile(Predicate<? super T> predicate)
La méthode takeWhile() utilise une assertion en tant que paramètre et retourne un sous-ensemble du Stream donné jusqu'à ce que l'expression de l'assertion retourne false pour la première fois. Si la première valeur ne satisfait pas la condition de l'assertion, un Stream vide est retourné.
La méthode takeWhile() retourne le plus grand nombre possible d'éléments à partir du début dans un Stream ordonné ; dans un Stream non ordonné, takeWhile() retourne un sous-ensemble des éléments qui répondent à la condition du predicate à partir du début.
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 précédent, la méthode takeWhile arrête d'itérer dès qu'elle rencontre une chaîne vide, et le résultat de l'exécution est :
abc
Syntax
default Stream<T> dropWhile(Predicate<? super T> predicate)
La méthode dropWhile agit de manière opposée à takeWhile, elle utilise une assertion en tant que paramètre et retourne le sous-ensemble du Stream donné jusqu'à ce que l'expression de l'assertion retourne false pour la première fois.
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 précédent, la méthode dropWhile commence à itérer et à afficher les résultats dès qu'elle rencontre une chaîne vide, et le résultat de l'exécution est :
ef
Syntax
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
La méthode permet de créer un flux ordonné (peut-être infini) en utilisant une valeur de graine initiale et en itérant l'application de la méthode suivante spécifiée. L'itération s'arrête lorsque le predicate.hasNext spécifié renvoie false.
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); } }
The execution output result is:
3 6 9
Syntax
static <T> Stream<T> ofNullable(T t)
The ofNullable method can prevent NullPointerExceptions exceptions, and can avoid null values by checking the stream.
If the specified element is not null, it retrieves an element and generates a single-element stream, and returns an empty stream if the element is null.
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); } }
The execution output result is:
1 0