在Java 8中,Stream API的iterate()方法将种子和一元运算符作为参数。随着流变得无限,它使开发人员可以通过使用limit,findFirst,findAny等添加显式终止条件。在Java 9中,StreamAPI的iterate()方法添加了一个新参数,该谓词采用打破该条件的条件。流。
语法static Stream iterate(T seed, Predicate super T> hasNext, UnaryOperator next)
示例import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.List;
public class StreamIterateMethodTest {
public static void main(String args[]) {
List numbers1 = Stream.iterate(1, i -> i+1) // with two arguments .limit(10)
.collect(Collectors.toList());
System.out.println("In Java 8:" + numbers1);
List numbers2 = Stream.iterate(1, i -> i <= 10, i -> i+1) // with three arguments .collect(Collectors.toList());
System.out.println("In Java 9:" + numbers2);
}
}
输出结果In Java 8:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
In Java 9:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]