📜  IntStream.generate - Java (1)

📅  最后修改于: 2023-12-03 15:01:25.711000             🧑  作者: Mango

IntStream.generate - Java

IntStream.generate是Java 8中的一个方法,允许生成一个无限大小的int值流。该方法接受一个Supplier<Integer>参数,该函数用于生成流中的元素。每次调用该函数时,IntStream.generate方法都会生成一个新的int值,并将其添加到流中,直到达到所请求的大小。

语法
public static IntStream generate(Supplier<Integer> s)
参数
  • s: 一个调用时代表一个int值的Supplier
返回值

一个无限大小的IntStream流。

示例

以下示例演示如何使用IntStream.generate方法生成5个随机的int值:

import java.util.Random;
import java.util.stream.IntStream;

public class Example {
    public static void main(String[] args) {
        Random random = new Random();
        IntStream intStream = IntStream.generate(() -> random.nextInt());
        intStream.limit(5).forEach(System.out::println);
    }
}

输出:

1663059628
-1351057420
-119768123
-1902405560
1339028748

在此示例中,我们使用一个名为random的随机数生成器,使用IntStream.generate方法来生成一个无限大小的IntStream流。我们然后使用limit方法限制流的大小为5,并使用forEach方法打印每个元素。

不良示例

以下示例演示了一个不良用法,其中我们尝试在生成的流中使用一个计数器。该代码将不会停止,因为generate方法生成一个无限大小的流

IntStream intStream = IntStream.generate(() -> {
    int i = 0;
    return i++;
});
结论

IntStream.generate方法是Java 8中的一个有用的方法,它可以为我们提供一个无限大小的int值流。当我们需要从一个方法中生成大量的数据时,这种方法非常有用,并且需要搭配limit方法使用。但请注意,如果我们不使用limit方法或类似的方法限制流的大小,它将是无限的。