添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

findFirst()方法返回一个Optional对象,描述了给定流中的第一个元素(如果流非空),否则返回一个空的Optional对象(如果流为空)。

1.Stream的findFirst()方法

Optional<T> findFirst()
  • findAny()方法是终端的短路操作,而findFirst()方法返回一个Optional对象。
  • 如果流非空,Optional对象包含作为给定流的第一个元素的值;
  • 如果流为空,Optional对象包含空值。
  • 如果选定的元素为null,将抛出NullPointerException。
  • 如果流具有定义的遭遇顺序,则findFirst()按遭遇顺序返回第一个元素。如果流没有遭遇顺序,则findFirst()可返回任何元素。
  • 这种行为适用于所有顺序流和并行流,findFirst()的行为不会因流的并行性而改变。
  • 2.Stream的findFirst()示例

    在给定示例中,我们从流中获取第一个元素。一旦我们获得了第一个元素,流操作就会移动到ifPresent()方法中。我们使用方法引用在ifPresent()方法内部打印第一个元素。

    public class Main 
      public static void main(String[] args) 
        //有序流
        Stream.of("one", "two", "three", "four")
            .findFirst()
            .ifPresent(System.out::println);
        //并行流
        Stream.of("one", "two", "three", "four")
          .parallel()
          .findFirst()
          .ifPresent(System.out::println);
    

    3.Stream的findFirst()与findAny()比较

    在非并行流中,大多数情况下findFirst()和findAny()都可能返回流的第一个元素,但findAny()不保证这种行为。使用findAny()可以更快地从任何并行流中获取任何元素。否则,在大多数情况下,我们始终可以使用findFirst()。

    版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
    本文链接:https://www.panziye.com/back/10428.html
    喜欢 (0)