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() 。
Java Stream
接口有两个方法,例如: findFirst() 和 findAny() 。
这两种方法看起来非常相似,但它们在某些条件下可能表现不同。
日期:2020-09-17 00:10:02 来源:oir作者:oir