Java 8 Stream : Limitation par prédicat
Dans les scénarios avec des flux potentiellement infinis, nous rencontrons souvent la nécessité de limiter le flux jusqu'au premier l’élément échoue à un prédicat spécifique. Java 9 a introduit l'opération utile takeWhile, permettant cette fonctionnalité sans effort.
Malheureusement, Java 8 ne dispose pas d'une telle opération. Ainsi, nous devons explorer des approches alternatives pour obtenir ce comportement.
Implémentation de takeWhile en Java 8
Pour implémenter takeWhile en Java 8, nous pouvons exploiter la stratégie suivante :
Vous trouverez ci-dessous un exemple d'implémentation :
import java.util.Iterator; import java.util.stream.Stream; public class StreamTakeWhile { public static <T> Stream<T> takeWhile(Stream<T> stream, java.util.function.Predicate<T> predicate) { Iterator<T> iterator = stream.iterator(); return Stream.generate(() -> { if (iterator.hasNext() && predicate.test(iterator.next())) { return iterator.next(); } return null; }); } public static void main(String[] args) { StreamTakeWhile.takeWhile(Stream.iterate(1, n -> n + 1), n -> n < 10) .forEach(System.out::println); } }
Utilisation de Java 9 takeWhile
Avec Java 9, vous pouvez directement utiliser l'opération takeWhile comme indiqué ci-dessous :
IntStream .iterate(1, n -> n + 1) .takeWhile(n -> n < 10) .forEach(System.out::println);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!