使用谓词查找流中的第一个不匹配
Java 9 引入了 takeWhile 和 dropWhile 操作,它们提供了一种基于限制流的便捷方法关于谓词。但是,在 Java 8 中,没有用于此目的的内置操作。
这里有一个自定义实现,用于在 Java 8 中使用谓词查找流中的第一个不匹配:
import java.util.stream.Stream; public class LimitStreamByPredicate { public static void main(String[] args) { // Create an infinite stream of numbers Stream<Integer> numbers = Stream.iterate(1, n -> n + 1); // Predicate to check if a number is less than 10 Predicate<Integer> predicate = n -> n < 10; // Create a limited stream using iteration Stream<Integer> result = numbers.iterator() .takeWhile(predicate) .map(n -> n); // Print the limited stream result.forEach(System.out::println); } }
在此代码中,我们使用迭代器手动迭代无限流,直到遇到无法满足谓词的元素。然后,我们创建一个新流(结果),其中仅包含与谓词匹配的元素。
这种自定义方法提供了与 Java 8 中 takeWhile 等效的功能,允许您根据特定条件限制流,甚至如果当前 Java 版本中没有内置操作。
以上是如何使用谓词查找 Java 8 流中的第一个不匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!