Java 8 Stream:透過謂詞限制
在潛在無限流的場景中,我們經常遇到需要限制流直到第一個流的情況。元素未通過特定謂詞。 Java 9 引入了有用的 takeWhile 操作,可以毫不費力地啟用此功能。
不幸的是,Java 8 缺少這樣的操作。因此,我們必須探索替代方法來實現此行為。
在 Java 8 中實作 takeWhile
要在 Java 8 中實作 takeWhile,我們可以利用以下策略:
以下是範例實作:
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); } }
使用Java 9 takeWhile
使用Java 9,您可以直接使用takeWhile 操作,take如下圖所示:
IntStream .iterate(1, n -> n + 1) .takeWhile(n -> n < 10) .forEach(System.out::println);
以上是如何為流實作 Java 8 與 Java 9 的「takeWhile」等效的功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!