Java中的 Stream iterate(T,Predicate,UnaryOperator) 方法及示例
iterate(T, Java 函数.Predicate, Java 函数.UnaryOperator)方法允许我们迭代流元素直到指定条件。此方法返回由给定 next函数迭代应用到初始元素产生的顺序有序 Stream,条件是满足作为参数传递的 hasNext 谓词。只要 hasNext 谓词返回 false,流就会终止。
如果传递的谓词不包含种子值,则此方法返回的结果序列可能为空。否则,第一个元素将是提供的种子值,下一个元素将是对种子值应用下一个函数的结果,以此类推,直到 hasNext 谓词指示流应该终止。
句法:
static Stream iterate(T seed,
Predicate hasNext,
UnaryOperator next)
参数:此方法接受三个参数:
- 种子:这是初始元素,
- hasNext :这是一个应用于元素的谓词,以确定流何时必须终止和
- next :这是一个应用于前一个元素以产生新元素的函数。
返回值:该方法返回一个新的顺序流。
下面的程序说明了 iterate(T, Java 函数.Predicate, Java 函数 .UnaryOperator) 方法:
方案一:
// 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 stream
= Stream.iterate(1,
i -> i <= 20, i -> i * 2);
// print Values
stream.forEach(System.out::println);
}
}
打印在 IDE 控制台上的输出如下所示。
输出:
方案二:
// 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 stream
= Stream.iterate(2.0,
decimal -> decimal > 0.25, decimal -> decimal / 2);
// print Values
stream.forEach(System.out::println);
}
}
打印在 IDE 控制台上的输出如下所示。
输出:
参考资料: https: 函数 /util/stream/Stream.html#iterate(T, Java Java , Java 函数)