findFirst() 方法

说明

Optional<T> findFirst()

此方法返回一个 Optional 描述此流的第一个元素。

如果流有:

  • 定义的遭遇顺序 - 流中遭遇顺序的第一个元素。
  • 没有遇到顺序 - 可以返回任何元素。

上述理论适用于所有顺序和并行流,并且findFirst()的行为不会改变。

Stream findFirst() 示例

import java.util.stream.Stream;
public class Main 
{
	public static void main(String[] args) 
	{
		//sequential stream
		Stream.of("one", "two", "three", "four")
				.findFirst()
				.ifPresent(System.out::println);

		//parallel stream
		Stream.of("one", "two", "three", "four")
			.parallel()
			.findFirst()
			.ifPresent(System.out::println);
	}
}
on  it road.com

Stream findAny() 方法

说明

Optional<T> findAny()

此方法返回一个“可选”,描述此流的任何元素。
如果流有:

  • 定义的相遇顺序 - 可以返回任何元素。
  • 没有遇到顺序 - 可以返回任何元素。

上述理论适用于所有顺序和并行流,并且 findAny()的行为不会改变。

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

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

Stream findAny() 示例

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);
	}
}

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

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

Stream findFirst()方法和findAny()方法的区别

Java Stream接口有两个方法,例如: findFirst() 和 findAny() 。
这两种方法看起来非常相似,但它们在某些条件下可能表现不同。

日期:2020-09-17 00:10:02 来源:oir作者:oir