Java Stream generate()方法示例

x33g5p2x  于2022-09-24 转载在 Java  
字(2.3k)|赞(0)|评价(0)|浏览(248)

本文将介绍 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
IntStreamLongStreamDoubleStream 中找到 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

相关文章

微信公众号

最新文章

更多