Java 8 Stream: Begrenzung durch Prädikat
In Szenarien mit potenziell unendlichen Streams müssen wir den Stream oft auf den ersten beschränken Element scheitert an einem bestimmten Prädikat. Java 9 führte die nützliche takeWhile-Operation ein und ermöglichte diese Funktionalität mühelos.
Leider fehlt in Java 8 eine solche Operation. Daher müssen wir alternative Ansätze erkunden, um dieses Verhalten zu erreichen.
TakeWhile in Java 8 implementieren
Um takeWhile in Java 8 zu implementieren, können wir die folgende Strategie nutzen:
Unten finden Sie eine Beispielimplementierung:
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); } }
Verwendung von Java 9 takeWhile
Mit Java 9 können Sie die takeWhile-Operation direkt nutzen, wie unten gezeigt:
IntStream .iterate(1, n -> n + 1) .takeWhile(n -> n < 10) .forEach(System.out::println);
Das obige ist der detaillierte Inhalt vonWie implementiert man das Java 8-Äquivalent von „takeWhile' von Java 9 für Streams?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!