如何使用 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/