java - IntStream 逐步迭代

标签 java functional-programming java-8

如何使用 IntStream 在步骤(3)中迭代一系列数字 (0-100)?

我尝试迭代,但这永远不会停止执行。

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 - IntStream 逐步迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62296636/

相关文章:

java - 通过 "buckets"查找元素的此类集合/算法的名称是什么

java - 使用模式拆分字符串时结果为空

Java8 Stream 的文件,如何控制文件的关闭?

java - 什么将参数传递给类似 ...(myClass.FINALOBJECT) 的方法?

java - java web应用程序中的文件上传显示文件未找到异常

java - OpenCV 检测最大矩形产生令人费解的结果

Java map 迭代

C# 7 - 为什么我不能从异步方法返回这个等待类型?

generics - F# 使用类型变量调用内联函数

java Streams - 如何将一个集合过滤为两个新集合