Java Stream findFirst/findAny - 查找 Java 流中的第一个或任何元素

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(302)   2023-06-26 07:54:18

在本文中,我们展示了如何在 Java 流中查找第一个或任何元素。

Java流

Java 流 是来自支持聚合操作的源的元素序列。流不存储元素;元素是按需计算的。从集合、数组或 I/O 资源等数据源中使用元素。

findFirst 方法返回一个描述流的第一个元素的 Optional,或者一个空的 Optional 如果流为空。

findAny 方法返回一个描述流中某些元素的 Optional,或者一个空的 Optional如果流为空。

Java Stream findFirst 示例

在下一个示例中,我们使用 findFirst 方法。

com/zetcode/FindFirstEx.java
package com.zetcode;

import java.util.List;

public class FindFirstEx {

    public static void main(String[] args) {

        var words = List.of("war", "cup", "cloud", "alert", "be", "ocean", "book");
        var empty = List.of();

        var first = words.stream().findFirst().orElse("not found");
        System.out.println(first);

        var first2 = empty.stream().findFirst().orElse("not found");
        System.out.println(first2);
    }
}

我们找到单词列表的第一个元素。

var words = List.of("war", "cup", "cloud", "alert", "be", "ocean", "book");
var empty = List.of();

我们有两个字符串列表。一个有七个字,一个是空的。

var first = words.stream().findFirst().orElse("not found");

我们找到列表的第一个元素。如果没有找到元素,我们返回“未找到”字符串。

war
not found

在第二个例子中,我们过滤了一个单词列表,然后找到它的第一个匹配元素。

com/zetcode/FindFirstEx2.java
package com.zetcode;

import java.util.List;

public class FindFirstEx2 {

    public static void main(String[] args) {

        var words = List.of("war", "cup", "cloud", "alert", "be",
                "water", "warm", "ocean", "book");

        var first = words.stream().filter(e -> e.startsWith("w"))
                .findFirst().orElse("not found");
        System.out.println(first);
    }
}

在示例中,我们找到以“w”开头的第一个单词。

war

Java Stream findAny 示例

在下一个示例中,我们使用 findAny 方法。

com/zetcode/FindAnyEx.java
package com.zetcode;

import java.util.List;

public class FindAnyEx {

    public static void main(String[] args) {

        var words = List.of(
                new User("John Doe", "gardener"),
                new User("Roger Roe", "driver"),
                new User("Jozef Kral", "shopkeeper"),
                new User("Boris Brezov", "musician"),
                new User("Lucia Novak", "teacher"));

        var res = words.stream().filter(u -> u.occupation().equals("gardener"))
                .findAny();

        res.ifPresent(System.out::println);
    }
}

record User(String name, String occupation) {
}

我们有一个用户列表。我们找出是否有任何用户是园丁。

User[name=Roger Roe, occupation=driver]

在本文中,我们介绍了 Java Stream findFirstfindAny 方法。

List 所有 Java 教程.

地址:https://www.cundage.com/article/java-stream-findfirst-findany.html

相关阅读

Spring Boot Vue.js 教程展示了如何使用 Vue.js 框架创建一个简单的 Spring Boot。 Vue.js Vue.js 是一个用于构建用户界面的 JavaScript ...
JavaScript 是否已经取代 Java 成为新的“一次编写,随处运行”的编程语言?这完全取决于您的观点。随着 WebAssembly 等技术的出现,Java 可以在新奇的“一次编写,随处编...
Usage of TypeScript,微软基于 JavaScript 的强类型语言, has soared compared to six years ago, according to th...
云莓将基于 Spring 构建的 Java 后端与使用 Lit 构建的 TypeScript 前端相结合,一个快速、响应式的 JavaScript 框架。基于 Vaadin Fusion 的 H...
本博客严重偏向于 GWT(和基于 GWT 的框架),但我们牢记 GWT 将来可能会被其他技术接管,因此我们始终对探索其他平台/框架持开放态度。正如他们所说,多元化可以降低风险。每种编程语言,即使...
Java JSON 教程展示了如何使用 JSON-Java 在 Java 中进行 JSON 序列化和反序列化。 JSON(JavaScript 对象显示法) 是一种轻量级数据交换格式。人类易于读...
JHipster 是一个长期存在且雄心勃勃的混合 Java 和 JavaScript 项目,致力于使用现代反应式前端简化全栈 Java 应用程序的开发。 JHipster 开发团队不断发布新版本...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Spring Boot JSON 教程展示了如何在 Spring Boot 注释中提供 JSON 数据。 春天 是一个流行的 Java 应用程序框架,弹簧贴 是 Spring 的演变,有助于创建...
根据最近一项全球开发人员调查,在开发人员偏好方面,JavaScript 和 Python 保持了持久力,而 锈 的使用率正在上升. 5 月 4 日的一份题为“开发者国家情况,第 22nd 版”的...