Stream 有两个参数版本,iterate
它采用种子 ( T seed
) 和迭代函数 ( UnaryOperator<T> f
) 并通过重复应用该函数来生成无限流。这几乎是传统 for 循环的完美替代,只不过它缺少终止谓词。 Java 9 添加了takeWhile
可用于终止以这种方式生成的流的功能,但不幸的是我们中的一些人还没有超越 Java 8。
<T> Stream<T> iterate(T seed, UnaryOperator<T> f, Predicate<T> stop)
向实用程序类添加一个静态方法可能会很好Streams
,它可以填补这个空白,至少在 Java 11 发布并被广泛认为稳定之前是这样。另一种(或可能是额外的)方法是向takeWhile
同一个类添加一个静态方法,该方法将通过某些谓词限制 Stream,尽管这有点笨拙。
谢谢,如果您需要更多详细信息或任何说明,请告诉我。