を使用してIntStreamを生成する方法:私は新しいJavaストリームAPIでこのコードを置き換えることができますどのようにJavaのストリームAPI
int n = someFunction(); // n > 0
for (int i = 3; i * i <= n; i += 2)
System.out.print(i);
私はIntStream.iterate(3, i -> i + 2)
を使用しようとしましたが、私は停止条件を追加することはできません。
ここでは.limit(int)
メソッドを使用することはできません。
アイデア?
:
ステップを指定することができ、三引数
IntStreamEx.rangeClosed
を使用して問題はJava 9で解決されます:http://stackoverflow.com/questions/20746429/limit-a-stream-by-a-predicate –レンジバージョンはまた、より良い並列動作を提供します(2つの理由により、並列リミットは高価で、iterate()はストリームソースを生成するための根本的に逐次的な方法です)。 –