📜  Java中的 Stream iterate(T,Predicate,UnaryOperator) 方法及示例

📅  最后修改于: 2022-05-13 01:54:29.846000             🧑  作者: Mango

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 函数)