Java Stream findAny() 示例

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(325)   2023-06-26 07:54:18

findAny() 方法返回一个 Optional 描述 给定流的任何元素 如果 流 是非空的,或者如果流为空,则为空 Optional

在非并行流中,findAny() 将在大多数情况下返回第一个元素,但不保证此行为。

引入了 Stream.findAny() 方法以提高并行流的性能。

1.流findAny()方法

Optional<T> findAny()
  • findAny() 方法是一个终端短路操作。
  • findAny() 方法返回一个Optional
  • 如果 Stream 非空,则 Optional 包含作为给定流的任何元素的值。在大多数情况下,返回的元素是第一个元素。
  • 如果 Stream 为空,则 Optional 包含空值。
  • 如果选择的元素是null,则抛出NullPointerException
  • 对于所有顺序流和并行流,它可能返回任何元素。 findAny() 的行为不会因并行度而改变流的。
  • 同样,在 strream 定义了遇到顺序或根本没有遇到顺序的情况下,没有保证的行为差异。

2. Stream findAny() 实例

在给定的示例中,我们使用 finaAny() 方法从 Stream 中获取任何元素。一旦我们获得第一个元素,流操作就会转移到 ifPresent() 方法。

我们在 ifPresent() 中使用 方法参考 打印接收到的元素方法。

import java.util.stream.Stream;

public class Main 
{
	public static void main(String[] args) 
	{
		//sequential stream

		Stream.of("one", "two", "three", "four")
				.findAny()
				.ifPresent(System.out::println);
		
		//parallel stream

		Stream.of("one", "two", "three", "four")
			.parallel()
			.findAny()
			.ifPresent(System.out::println);
	}
}

程序输出。

one
one

3. 流 findFirst() 与 findAny()

在非并行流中,findFirst()findAny() 在大多数情况下都可能返回 Stream 的第一个元素。但是 findAny() 不对此行为提供任何保证。

使用 findAny() 可以更快地从任何并行流中获取任何元素。否则在大多数情况下我们总是可以使用 findFirst()

快乐学习!!

地址:https://www.cundage.com/article/stream-findany.html

相关阅读

Java 8 Stream.map() 将 Stream&lt;X&gtl; 转换为 Stream&lt;Y&gtl;。对于每个 X 类型的对象,都会创建一个新的 Y 类型的对象,并将其放入新的...
学习使用 Stream.concat() 方法用于将两个流合并为一个流,该流由两个合并流的所有元素组成。 1.流concat()方法 static &lt;T&gtl; Stream&lt;T&...
Stream flatMap() 方法用于将集合流扁平化为对象流。这些对象是从原始 Stream 中的所有集合组合而来的。 flatMap() 操作具有对 Stream 的元素应用一对多转换的效...
Stream skip(n) 方法用于从给定 Stream 中跳过第一个 'n' 元素。 skip() 方法返回一个新的 Stream,它包含原始 Stream 的剩余元素,在指定的 n 元素被...
学习计算 Stream 中由指定过滤器表达式传递的匹配项。统计项目,我们可以使用以下两种方法,都是终端操作,结果是一样的。 Stream.count() Stream.collect(Colle...
Java Stream reduce 教程展示了如何对 Java 8 流执行缩减操作。 Java流 Java 流 是来自支持聚合操作的源的元素序列。流不存储元素;元素是按需计算的。从集合、数组或...
Java Stream anyMatch(predicate) 是终端短路操作。它用于检查 Stream 是否包含至少一个满足给定 Predicate 的元素。 1. 流 anyMatch() ...
findFirst() 方法返回一个 Optional 描述 给定流的第一个元素 如果 流 是非空的,或者如果流为空,则为空 Optional。 1.流findFirst()方法 Optiona...
findAny() 方法返回一个 Optional 描述 给定流的任何元素 如果 流 是非空的,或者如果流为空,则为空 Optional。 在非并行流中,findAny() 将在大多数情况下返回...
了解如何使用 Stream toArray() API 将 Stream 转换为数组。在本教程中,我们将看到多个示例,用于将 Stream 元素收集到 数组。 1. Stream toArray...