微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

IntStream分步迭代

如何解决IntStream分步迭代

实际上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

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。