Java 创建流的10种方法

Posted 康小庄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 创建流的10种方法相关的知识,希望对你有一定的参考价值。

用 Java 创建流的10种方法

Java 8 中引入的流 API ,用于处理对象的集合。Stream 是一个对象序列,它支持许多不同的方法,这些方法可以通过管道排列来产生所需的结果。

Java 流的特点是–

  • 流不是数据结构,而是从集合、数组或输入/输出通道获取输入。
  • 流不改变原始数据结构,它们只提供流水线方法的结果。
  • 每个中间操作都被延迟执行,并返回一个流,因此各种中间操作都可以用管道连接。终端操作标记流的结尾并返回结果。

1.Using Collection

进场:

  1. 获取收藏
  2. 使用 Collection.stream()方法从集合中构造一个顺序流
  3. 打印流
public void getStream01() 
		ArrayList<Object> list = new ArrayList<>();
		list.add("Geeks");
		list.add("for");
		list.add("Geeks");
		Stream<Object> stream = list.stream();
		Iterator<Object> iterator = stream.iterator();
		while (iterator.hasNext()) 
			System.out.println(iterator.next() + " ");
		
	

Output:

Geeks for Geeks

2.Create a stream from specified values

Stream.of(T…t) 方法可用于创建具有指定 T 值的流,其中 T 是元素。这个方法返回一个包含 t 个元素的顺序流。

public void getStream02() 
		Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9);
		stream.forEach(s -> System.out.println(s + " "));
	

Output:

1 2 3 4 5 6 7 8 9

3.Create stream from an array:

()流和数组流是从指定数组创建顺序流的两种常用方法。当用非基元类型的整数数组调用时,这两个方法都返回一个流

3.1Create stream using Arrays.stream()

public void getStream03() 
		String[] arr = new String[]  "a", "b", "c" ;
		Stream<String> stream = Arrays.stream(arr);
		Iterator<String> iterator = stream.iterator();
		while (iterator.hasNext()) 
			System.out.println(iterator.next() + " ");
		
	

Output:

a b c

3.2 Create stream using Stream.of() A non interfering action to be perform on elements as they are consumed from the stream and returns also a new stream.

public void getStream04() 
		String[] arr = new String[]  "a", "b", "c" ;
		Stream<String> stream = Stream.of(arr);
		Iterator<String> iterator = stream.iterator();
		while (iterator.hasNext()) 
			System.out.println(iterator.next() + " ");
		
	

Output:

a b c

4.Create an empty stream using Stream.empty()

空()方法在创建时使用,以避免为没有元素的流返回 null。

public void getStream05() 
		Stream<Object> stream = Stream.empty();
		Iterator<Object> iterator = stream.iterator();
		while (iterator.hasNext()) 
			System.out.println(iterator.next() + " ");
		
	

5.Create a Stream using Stream.builder()

当应该在语句的右边部分另外指定所需的类型时,使用 builder()方法,否则 build()方法将创建流的实例。

public void getStream06() 
		Builder<Object> builder = Stream.builder();
		Stream<Object> stream = builder.add("a").add("b").add("c").build();
		Iterator<Object> iterator = stream.iterator();
		while (iterator.hasNext()) 
			System.out.println(iterator.next() + " ");
		
	

Output:

a b c

6.Create an infinite Stream using Stream.iterate()

iterate()方法返回一个无限顺序有序流,该流是通过对初始元素种子迭代应用函数 f 而产生的。在下面的示例中,结果流的第一个元素是迭代方法的第一个参数。为了创建每一个后续元素,该函数应用于前一个元素。在下面的例子中,第二个元素是 4

public void getStream07() 
		int seedValue = 2;
		int limitTerms = 5;
		Stream.iterate(seedValue, (Integer n) -> n * n).limit(limitTerms).forEach(System.out::println);
	

Output:

2 4 16 256 65536

7.Create an infinite Stream using Stream.generate() method

generate()方法接受一个供应商来生成元素,生成的流是无限的。因此,要限制它,请指定所需的大小,否则 generate()方法将一直工作,直到达到内存限制。

public void getStream08() 
		int limitTerms = 5;
		Stream.generate(Math::random).limit(limitTerms).forEach(System.out::println);
	

Output:

0.2293502475696314 0.5650334795948209 0.3418138293253522 0.36831074763500116 0.4864408670097241

8.Create stream from a Pattern using Predicate

在 java 8 中,Pattern 的谓词 asPredicate()方法创建了一个用于模式匹配的谓词布尔值函数。

public void getStream09() 
		Pattern pattern = Pattern.compile("^G");
		List<String> list = Arrays.asList("Geeks", "For", "Geek", "GeeksForGeeks", "A Computer Portal");
		list.stream().filter(pattern.asPredicate()).forEach(System.out::println);
	

Oupput

Geeks Geek GeeksForGeeks

以上是关于Java 创建流的10种方法的主要内容,如果未能解决你的问题,请参考以下文章

6.IO流(10月07日01:08:06创建)

java.io.SequenceInputStream

Java InputStream 阻塞读取

java 通过流的方式读取本地图片并显示在jsp 页面上(类型以jpgpng等结尾的图片)

10.2-全栈Java笔记:最全面的IO技术

java 21 - 6 字符缓冲流的特殊方法以及该方法高效复制文件