Java 9 中 iterate() 方法对 Stream API 的重要性?\n
在 Java 8 中,Stream API 的 iterate() 方法把 种子 和 一元 运算符 作为参数。由于流是无限的,开发人员必须使用 limit、findFirst、findAny 等等,添加 显式 终止 条件 。在 Java 9 中,Stream API 的 iterate() 方法添加了新的参数,即一个 谓语 ,它使用条件来中断流。
语法
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> 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<Integer> numbers1 = Stream.iterate(1, i -> i+1) // with two arguments .limit(10) .collect(Collectors.toList()); System.out.println("In Java 8:" + numbers1); List<Integer> 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]
广告