java - IntStream 分步迭代

标签 java functional-programming java-8

如何使用 IntStream 在步骤 (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 - IntStream 分步迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40358827/

相关文章:

java - NetBeans 中 Java 7 的编译问题

java - 检查 List<int[]> 是否包含给定的 int[]

java 错误的操作数和标识符使用

javascript - 纯函数可以异步吗?

list - 如何在OCaml中检查下一个 'head'为空?

java - 检测 JDBC 连接中尚未提交的打开事务

casting - 我可以在功能上连接数字和字符串吗?

spring-mvc - 如何在 Spring 中使用 Kotlinx.html 代替 JSP 或 Thymeleaf 的普通 html 模板引擎?

Java 8 : Expecting a stackmap frame at branch target 65

java - 我如何从该方法外部访问该变量?