📅  最后修改于: 2023-12-03 14:42:52.056000             🧑  作者: Mango
Stream iterate() 方法是 Java 8 提供的一个流式API方法,它用于通过函数生成一组无限的有序元素。该方法可以接受三个参数,分别为起始元素、谓词和函数。其中,起始元素表示起始值,谓词表示终止条件,函数则循环生成下一个元素。通过这三个参数的组合,可以生成不同类型的序列。下面我们将详细讲解该方法的使用及示例。
public static<T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
该方法会返回一个Stream对象,其中包含一组无限的有序元素。
例如,我们可以通过 iterate() 方法生成一个从 0 开始的自然数序列:
Stream.iterate(0, i -> i + 1)
.limit(10)
.forEach(System.out::println);
输出结果为:
0
1
2
3
4
5
6
7
8
9
接下来,我们给出一个更加复杂的示例。在该示例中,我们使用 iterate() 方法和 filter() 方法生成了一个斐波那契数列:
Stream.iterate(new int[]{0,1}, arr -> new int[]{arr[1], arr[0]+arr[1]})
.map(arr -> arr[0])
.limit(10)
.forEach(System.out::println);
斐波那契数列是指:第 n 项为前两项之和,其中第 0 项为 0,第 1 项为 1。因此,我们先将起始元素设置为 int[]{0,1},然后通过函数 arr -> new int[]{arr[1], arr[0]+arr[1]} 计算出下一个元素(即前两项之和)。最后,再通过 map() 方法取出第一个元素,即为所求的斐波那契数列。
输出结果为:
0
1
1
2
3
5
8
13
21
34
使用 iterate() 方法时,需要注意以下几点: