
在Java 8中,Stream API的iterate()方法接受seed和unary operator作为参数。由于流变为无限,开发者需要使用limit、findFirst、findAny等方法添加显式终止条件。在Java 9中,Stream API的iterate()方法添加了一个新的参数,即predicate,用于指定中断流的条件。
语法
<strong>static <T> Stream<T> iterate(T seed, Predicate<? super T><!--? super T--> hasNext, UnaryOperator<T> next)</strong>
Example
的中文翻译为:示例
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.List;
public class StreamIterateMethodTest {
public static void main(String args[]) {
List<Integer> numbers1 = Stream.<strong>iterate</strong>(1, i -> i+1) <strong> // with two arguments</strong>
.<strong>limit</strong>(10)
.<strong>collect</strong>(Collectors.toList());
System.out.println("In Java 8:" + numbers1);
<strong>List<Integer></strong> numbers2 = Stream.<strong>iterate</strong>(1, i -> i <= 10, i -> i+1) <strong>// with three arguments</strong>
<strong>.collect</strong>(Collectors.toList());
System.out.println("In Java 9:" + numbers2);
}
}输出
<strong>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]</strong>











