迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的 findFirst 流方法

作者:迹忆客 最近更新:2023/11/13 浏览次数:

java.util.stream API 是在 Java 8 中引入的;它用于处理对象的集合。不同的源(例如数组或集合)可以创建流。

在这里,我们将仔细研究 findFirst()findAny() 流方法以及何时使用它们。


Java 8 中的 findFirst() 流方法

Stream 不会改变原始数据;它使用管道方法评估流的元素。

Stream API 方法 findFirst() 是终端操作;它终止并返回结果。当我们需要序列中的第一个元素时,我们使用 findfFirst() 方法。

此方法返回一个 Optional<T>,它描述了流的第一个元素。这里的 TString 的类型。

Optional 是一个容器对象;它可能持有也可能不持有非空值。如果流为空,则返回的 Optional 将为空。

我们在不同的上下文中使用 findFirst() 方法创建了一个 fruitsnumbers 列表,它们分别保存 StringInteger 类型的数据。我们在返回列表元素流的列表上调用 .stream()

我们需要该列表中的第一个元素,因此我们在其上调用 findFirst() 方法。它返回一个 Optional,我们将其存储在 first 中。

我们使用返回 booleanisPresent() 方法检查 Optional 实例是否包含值。如果它返回 true,我们有一个值,我们使用 first.get() 获取它并打印出来。如果 Optional 实例为空,我们不打印任何值。

第二条语句 numbers.stream().filter((x)->x>5).findFirst() 给出了第二个 Optional 实例 firstN。我们首先应用 filter() 方法来返回基于给定谓词的过滤流。

此方法返回一个新的元素流,其值大于 5。从该流中,我们需要获取第一个元素。在我们的例子中,numbers 流中第一个值大于 5 的元素只有 8

import java.util.List;
import java.util.Optional;

public class StreamTest {
  public static void main(String[] args) {
    List<String> fruits = List.of("Apple", "Grapes", "Orange", "Kiwi");
    List<Integer> numbers = List.of(4, 5, 3, 8);

    Optional<String> first = fruits.stream().findFirst();
    if (first.isPresent()) {
      String string = first.get();
      System.out.println("First String is : " + string);
    } else {
      System.out.println("No value");
    }
    Optional<Integer> firstN = numbers.stream().filter((x) -> x > 5).findFirst();
    if (firstN.isPresent()) {
      System.out.println("First Number is : " + firstN.get());
    } else {
      System.out.println("No value");
    }
  }
}

输出:

First String is : Apple
First Number is : 8

Java 8 中的 findAny() 流方法

findAny() 方法返回描述流的任何元素的 Optional 实例。我们在下面的程序中有一个 Integer 类型元素的列表。

我们从列表中创建一个流并过滤该流以返回值小于 5 的数字。然后我们调用 findAny() 从过滤后的流中获取任何数字。

在大多数情况下,它将返回第一个元素。如果 Optional 实例 firstN 不为空,我们打印我们使用 get() 方法获得的实例值。

import java.util.List;
import java.util.Optional;

public class StreamTest {
  public static void main(String[] args) {
    List<Integer> numbers = List.of(4, 5, 2, 8);
    Optional<Integer> firstN = numbers.stream().filter((x) -> x < 5).findAny();
    if (firstN.isPresent()) {
      System.out.println("Any First Number less then 5 is : " + firstN.get());
    } else {
      System.out.println("No value");
    }
  }
}

输出:

Any First Number less then 5 is : 4

请注意,对于顺序流和并行流,findAny()findFirst() 方法的行为不会改变。不保证在非并行流的情况下 findAny() 的行为。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java 中的 volatile 关键字

发布时间:2023/11/13 浏览次数:173 分类:Java

本文讨论了 Java 中的 volatile 关键字及其优缺点,并举例说明了如何使用。Java 是一种非常流行的编程语言,通过了解 Java,我们可以很容易地理解它为什么会在编程社区中获得这样的地位。

Java 中的 StringUtils

发布时间:2023/11/13 浏览次数:80 分类:Java

本文介绍 Java 中的 StringUtils 类是什么。本文介绍什么是 StringUtils 以及如何在 Java 中使用它来处理字符串。StringUtils 是一个用于处理 String 的类,它提供了比 Java String 类更多的实用方法。

Java 中的 flatMap

发布时间:2023/11/13 浏览次数:132 分类:Java

本文介绍 flatMap 以及如何在 Java 中使用它。本文介绍 flatMap 以及如何在 Java 中使用它。flatMap 是 Java 流中的一个操作/函数,用于在执行某些功能性任务后获取新流。在这里,我们将讨论 flatMap

在 Java 中将 Stream 元素转换为映射

发布时间:2023/11/13 浏览次数:77 分类:Java

我们将使用 Java 将流元素转换为映射。我们将向你展示如何使用 Collectors.toMap() 从 Java 字符串中提取映射。我们将讨论 Java Streams 的实际用途以及如何将流元素转换为映射元素。

修复 Java NoClassDefFoundError 错误

发布时间:2023/11/13 浏览次数:199 分类:Java

本文介绍如何修复 Java 中的 NoClassDefFoundError。在 Java 语言中,错误是主要由于缺乏资源而发生的异常。此外,错误无法在编译时捕获并在运行时发生。

在 Java 中扩展 Comparable

发布时间:2023/10/19 浏览次数:97 分类:Java

本教程展示了如何在 Java 中清除 StringBuilder 本指南将了解在 Java 中扩展 Comparable 接口。它写成 Comparable。它是一个由 Java 中的许多类实现的接口。

Java 中的 Predicate 是什么

发布时间:2023/10/19 浏览次数:109 分类:Java

本文介绍 Java 8 中的 Predicate 接口。本教程通过 Java 示例介绍 Predicate 接口。Predicate 是 Java 中的一个接口,用作 lambda 表达式或方法引用的目标赋值。

Java 输出参数

发布时间:2023/10/19 浏览次数:93 分类:Java

本教程演示了 Java 是否有类似 C# 的 out 参数关键字。Java 不支持像 C# 中的 out 和 ref 之类的关键字在方法中通过引用传递,因为值仅在 Java 中传递参数。该值甚至通过引用。

Java 中的 parameter 与 argument

发布时间:2023/10/19 浏览次数:84 分类:Java

本文介绍 Java 中 parameter 和 argument 的区别。本教程通过 Java 中的示例介绍 parameter 和 argument 之间的区别。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便