当前位置: 首页 > 面试题库 >

如何使用Java 8创建无限流

华乐逸
2023-03-14
问题内容

有没有简单的方法就可以使用java-8在没有外部库的情况下创建无限流?

例如在Scala中:

Iterator.iterate(0)(_ + 2)

问题答案:

是的,有一个 简单的 方法:

IntStream.iterate(0, i -> i + 2);

作为用例:

IntStream.iterate(0, i -> i + 2)
         .limit(100)
         .forEach(System.out::println);

打印出0到198,以2为步长递增。

通用方法是:

Stream.iterate(T seed, UnaryOperator<T> f);

后者的用法可能更不常见。



 类似资料:
  • 我正在寻找第一次到流API的Java8。我尝试创建一个筛选器来从映射中删除元素。

  • 我试图使用Java8实现管道设计模式,下面的文章供我参考: https://stackoverflow.com/a/58713936/4770397 但问题是,我不知道如何将声明为抽象方法。

  • 问题内容: 尽管有一些阅读,但我遇到了一些我仍难以理解的代码。调用了一个方法,该方法需要两个参数,其中一个是Runnable。尽管有一个lambda,但没有传递Runnable对象。 例如: 所以我的问题是,你能解释一下如何从lambda创建一个Runnable吗,也请有人解释一下语法 () -> {}。具体来说,()括号是什么意思? 谢谢。 问题答案: Lambda可以在需要功能接口的任何地方使

  • 看看我制作的以下类: 以及它在以下方面的用法: 如果我使用,可能令人惊讶的是,我将永远得不到无限流。 相反,代码将在底层方法中创建时永远循环。 到目前为止,这是纯理论上的,但如果我想首先跳过无限流中的前x个数字,然后用最后的y个数字来限制它,我可以明确地理解它的必要性,如下所示: 代码不会返回一个结果,应该怎么做呢?

  • 是否可以从迭代器创建一个流,其中对象的序列与通过反复调用迭代器的next()方法生成的序列相同?我所考虑的具体情况涉及到Treeset.desceningIterator()返回的迭代器的使用,但是我可以想象在其他情况下,迭代器是可用的,而不是它所引用的集合。 例如,对于,我们可以编写并按照该集合的排序顺序获取该集合中的对象流,但是如果我们希望它们按照不同的顺序,比如通过使用获得的顺序呢?我想象的