IntStream.range(0, 1000)
/* .parallel() */
.filter(i -> i+1 % 100 == 0)
.peek(i -> System.out.println("Test number " + i + " started."))
/* other operations on the stream including a terminal one */;
如果测试在每次迭代中运行,而不考虑条件(取出):filter
IntStream.range(0, 1000)
.peek(i -> {
if (i + 1 % 100 == 0) {
System.out.println("Test number " + i + " started.");
}
}).forEach(i -> {/* the test */});
另一种方法(如果要使用预定义步骤循环访问索引,如@Tunaki所述)是:
IntStream.iterate(0, i -> i + 100)
.limit(1000 / 100)
.forEach(i -> { /* the test */ });
JDK 9 中有一个很棒的重载方法 Stream.iterate(种子、条件、一元操作器
),它完全适合您的情况,旨在使流有限,并可能取代以下简单
方法:
Stream<Integer> stream = Stream.iterate(0, i -> i < 1000, i -> i + 100);