for循环如何使用Java8流迭代x次?
我有一个旧式的for
循环来做一些负载测试:
For (int i = 0 ; i < 1000 ; ++i) {
if (i+1 % 100 == 0) {
System.out.println("Test number "+i+" started.");
}
// The test itself...
}
如果没有^{
此外,流的使用将使切换到并行流变得容易如何切换到并行流
*我想保留对i
的引用
你可以在下面搜索框中键入要查询的问题!
我有一个旧式的for
循环来做一些负载测试:
For (int i = 0 ; i < 1000 ; ++i) {
if (i+1 % 100 == 0) {
System.out.println("Test number "+i+" started.");
}
// The test itself...
}
如果没有^{
此外,流的使用将使切换到并行流变得容易如何切换到并行流
*我想保留对i
的引用
# 1 楼答案
如果测试在每个迭代上运行,而不考虑条件(去掉
filter
):另一种方法(如@Tunaki所述,如果您想用预定义的步骤在索引上迭代)是:
JDK 9中有一个很棒的重载方法
Stream.iterate(seed, condition, unaryOperator)
,它非常适合您的情况,旨在使流有限,并可能取代普通的for
:# 2 楼答案
您可以使用
IntStream
,如下所示,并在注释中解释:(1)迭代
IntStream
范围从1到1000(2)转换为
parallel
流(3)应用
Predicate
条件以允许带有(i+1)%100 == 0
的整数(4)现在将整数转换为字符串
"Test number "+i+" started."
(5)输出到控制台