findAny()
方法返回一个 Optional 描述 给定流的任何元素 如果 流 是非空的,或者如果流为空,则为空 Optional
。
在非并行流中,
findAny()
将在大多数情况下返回第一个元素,但不保证此行为。
引入了 Stream.findAny()
方法以提高并行流的性能。
findAny()
方法Optional<T> findAny()
findAny()
方法是一个终端短路操作。findAny()
方法返回一个Optional
。Optional
包含作为给定流的任何元素的值。在大多数情况下,返回的元素是第一个元素。Optional
包含空值。null
,则抛出NullPointerException。findAny()
的行为不会因并行度而改变流的。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
在非并行流中,findFirst()
和 findAny()
在大多数情况下都可能返回 Stream 的第一个元素。但是 findAny()
不对此行为提供任何保证。
使用 findAny()
可以更快地从任何并行流中获取任何元素。否则在大多数情况下我们总是可以使用 findFirst()
。
快乐学习!!
地址:https://www.cundage.com/article/stream-findany.html