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

IntStream分步迭代

雍宇定
2023-03-14
问题内容

如何使用IntStream在step(3)中迭代数字范围(0-100)?

我试过了iterate,但这从未停止执行。

IntStream.iterate(0, n -> n + 3).filter(x -> x > 0 && x < 100).forEach(System.out::println)

问题答案:

实际上range,这是理想的。

IntStream.range(0, 100).filter(x -> x % 3 == 0); //107,566 ns/op [Average]

编辑:Holgers的解决方案是性能最快的解决方案。

由于以下几行代码

IntStream.range(0, 100).filter(x -> x % 3 == 0).forEach((x) -> x = x + 2);

IntStream.range(0, 100 / 3).map(x -> x * 3).forEach((x) -> x = x + 2);

int limit = ( 100 / 3 ) + 1; 
IntStream.iterate(0, n -> n + 3).limit(limit).forEach((x) -> x = x + 2);

显示这些基准结果

Benchmark                 Mode  Cnt    Score    Error  Units
Benchmark.intStreamTest   avgt    5  485,473 ± 58,402  ns/op
Benchmark.intStreamTest2  avgt    5  202,135 ±  7,237  ns/op
Benchmark.intStreamTest3  avgt    5  280,307 ± 41,772  ns/op


 类似资料:
  • 我当时正在读一本名为《现代Java在行动》的书,其中一部分代码我无法理解。 作者表示,代码不会终止。原因是无法在过滤器中知道数字是否继续增加,因此它会无限地继续过滤它们! 我不明白原因。有人能解释一下为什么吗。

  • 原文: http://exploringjs.com/impatient-js/ch_sync-iteration.html 27.1。什么是同步迭代? 同步迭代是一个 _ 协议 _(接口加上使用它们的规则),它连接 JavaScript 中的两组实体: **数据来源:**一方面,数据有各种形状和大小。在 JavaScript 的标准库中,您有线性数据结构 Array,有序集合 Set(元素按添加

  • 异步迭代允许我们对按需通过异步请求而得到的数据进行迭代。例如,我们通过网络分段(chunk-by-chunk)下载数据时。异步生成器(generator)使这一步骤更加方便。 首先,让我们来看一个简单的示例以掌握语法,然后再看一个实际用例。 回顾可迭代对象 让我们回顾一下可迭代对象的相关内容。 假设我们有一个对象,例如下面的 range: let range = { from: 1, to

  • JavaScript中有没有已知的技巧来区分和之间的区别,而不触发迭代? 我正在尝试实现以下类型检查器: 我知道调用会告诉我们这一点,但在无法触发迭代时我需要它。 此外,即使我在TypeScript中给出了示例,我也需要在运行时严格检查它。

  • 我在考虑制作一个动画,例如,一个圆圈从屏幕/网站的顶部下降到底部,然后开始无休止地旋转。我有这个想法,但我不知道如何用CSS来描述它。 这就是我到目前为止所做的事情,我被卡住了: 我不知道如何在“100%”步骤中进行迭代。请给我一些建议

  • 问题内容: 我想对不带数字键()的mongoDB集合执行迭代。集合只有一个随机字符串作为_id,并且集合的大小很大,因此使用来将整个文档加载到RAM 上不是可行的选择。另外,我想对每个元素执行异步任务。的使用或者,是因为任务的异步性质的限制。我尝试使用上述方法运行任务,但它确实与异步任务冲突,返回了未完成的承诺而不是正确的结果。 例 我怎样才能仅使用mongoDB集合进行迭代? 问题答案: 该方法