📅  最后修改于: 2023-12-03 15:01:25.711000             🧑  作者: Mango
IntStream.generate
是Java 8中的一个方法,允许生成一个无限大小的int值流。该方法接受一个Supplier<Integer>
参数,该函数用于生成流中的元素。每次调用该函数时,IntStream.generate
方法都会生成一个新的int值,并将其添加到流中,直到达到所请求的大小。
public static IntStream generate(Supplier<Integer> s)
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
方法或类似的方法限制流的大小,它将是无限的。