首页 >Java >java教程 >如何基于谓词限制无限 Java 8 流?

如何基于谓词限制无限 Java 8 流?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-26 13:40:10561浏览

How Can I Limit an Infinite Java 8 Stream Based on a Predicate?

Java 8:实现基于谓词匹配的流限制

Java 8 缺乏特定的流操作,该操作限制潜在的无限流,直到某个元素无法匹配给定谓词。虽然 Java 9 为此引入了 takeWhile 操作,但 Java 8 用户寻求替代的实现策略。

Java 8 中的解决方案

在 Java 中实现基于谓词的流限制8、可以采用以下方法:

  • 创建一个无限Stream:利用Stream.iterate或Stream.generate创建无限的值流。
  • 使用限制和过滤器操作:应用具有任意限制的限制操作(例如Long.MAX_VALUE) 以避免无限迭代。然后,使用过滤器评估每个元素的谓词。这可确保迭代继续,直到谓词失败。

示例:

IntStream.iterate(1, n -> n + 1)
    .limit(Long.MAX_VALUE)
    .filter(n -> n < 10)
    .forEach(System.out::println);

Java 9 及更高版本

如果使用 Java 9 或更高版本,takeWhile 操作会简化实施:

IntStream.iterate(1, n -> n + 1)
    .takeWhile(n -> n < 10)
    .forEach(System.out::println);

以上是如何基于谓词限制无限 Java 8 流?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn