本文将介绍 Stream.generate
方法示例。 generate
方法返回一个无限的顺序无序流,其中每个元素由提供的 Supplier
生成。 generate
方法用于生成恒定流和随机元素流。
从 Java 文档中找到 generate
方法签名。
static <T> Stream<T> generate(Supplier<? extends T> s)
参数:
使用生成流元素的 Supplier
传递。
返回:
它返回一个新的无限顺序无序 Stream
。
示例 1
找到生成随机整数流的示例。
Stream<Integer> stream = Stream.generate(() -> new Random().nextInt(10));
stream.forEach(e -> System.out.println(e));
找到输出。
2
5
1
---
找到生成随机布尔值流的示例。
Stream.generate(() -> new Random().nextBoolean())
.forEach(e -> System.out.println(e));
找到输出。
true
false
true
---
找到生成恒定流的示例。
Stream.generate(() -> "Hello World!")
.forEach(e -> System.out.println(e));
输出
Hello World!
Hello World!
Hello World!
---
示例 2
我们知道 generate
返回无限的顺序流,为了限制流中元素的数量,我们可以使用 Stream.limit
方法。
LimitGenerateDemo.java
package com.concretepage;
import java.util.Random;
import java.util.stream.Stream;
public class LimitGenerateDemo {
public static void main(String[] args) {
Stream.generate(() -> new Random().nextInt(10)).limit(3)
.forEach(e -> System.out.println(e));
Stream.generate(() -> new Random().nextBoolean()).limit(3)
.forEach(e -> System.out.println(e));
Stream.generate(() -> "Hello World!").limit(3)
.forEach(e -> System.out.println(e));
}
}
输出
3
1
3
true
false
false
Hello World!
Hello World!
Hello World!
示例 3
从 IntStream
、LongStream
和 DoubleStream
中找到 generate
方法声明。
对于 IntStream
static IntStream generate(IntSupplier s)
对于 LongStream
static LongStream generate(LongSupplier s)
对于 DoubleStream
static DoubleStream generate(DoubleSupplier s)
现在找到示例。
GenerateDemo.java
package com.concretepage;
import java.util.Random;
import java.util.stream.DoubleStream;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
public class GenerateDemo {
public static void main(String[] args) {
System.out.println("--- IntStream ---");
IntStream.generate(() -> new Random().nextInt()).limit(3)
.forEach(e -> System.out.println(e));
System.out.println("--- LongStream ---");
LongStream.generate(() -> new Random().nextLong()).limit(3)
.forEach(e -> System.out.println(e));
System.out.println("--- DoubleStream ---");
DoubleStream.generate(() -> new Random().nextDouble()).limit(3)
.forEach(e -> System.out.println(e));
}
}
输出
--- IntStream ---
1208611141
1228590173
1248692128
--- LongStream ---
-1743816652457802629
-5799826804201802284
795354974140733326
--- DoubleStream ---
0.8264963255616102
0.6543249573645461
0.037807208216310784
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.concretepage.com/java/java-8/java-stream-generate
内容来源于网络,如有侵权,请联系作者删除!