Java Stream iterate(T,Predicate,UnaryOperator)方法及示例
iterate(T, java.util.function.Predicate , java.util.function.UnaryOperator) 方法允许我们对流元素进行迭代,直到指定条件。该方法返回一个连续的有序流,该流由给定的next函数迭代应用于初始元素产生,条件是满足作为参数传递的hasNext谓词。一旦hasNext谓词返回错误,流就会终止。
如果传递的谓词在种子值上不成立,这个方法返回的结果序列可能是空的。否则,第一个元素将是提供的种子值,下一个元素将是对种子值应用下一个函数的结果,如此反复,直到hasNext谓词表明流应该终止。
语法
static <T> Stream<T> iterate(T seed,
Predicate<T> hasNext,
UnaryOperator<T> next)
参数: 该方法接受三个参数。
- seed : 是初始元素。
- hasNext :这是一个应用于元素的谓词,以确定流必须在什么时候终止,以及
- next :这是一个应用于前一个元素的函数,产生一个新的元素。
返回值: 该方法返回一个新的连续的流。
下面的程序说明了iterate(T, java.util.function.Predicate, java.util.function.UnaryOperator) 方法。
程序1 :
// Java program to demonstrate
// Stream.iterate method
import java.util.stream.Stream;
public class GFG {
public static void main(String[] args)
{
// create a stream using iterate
Stream<Integer> stream
= Stream.iterate(1,
i -> i <= 20, i -> i * 2);
// print Values
stream.forEach(System.out::println);
}
}
打印在IDE控制台的输出如下。
输出:
程序2 :
// Java program to demonstrate
// Stream.iterate method
import java.util.stream.Stream;
public class GFG {
public static void main(String[] args)
{
// create a stream using iterate
Stream<Double> stream
= Stream.iterate(2.0,
decimal -> decimal > 0.25, decimal -> decimal / 2);
// print Values
stream.forEach(System.out::println);
}
}
打印在IDE控制台的输出如下。
输出:
引用: https://docs.oracle.com/javase/10/docs/api/java/util/stream/Stream.html#iterate(T, java.util.function.Predicate, java.util.function.UnaryOperator)