Java 创建流的10种方法

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 Java 创建流的10种方法,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

用 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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140689.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!