在本文中,我们展示了如何在 Java 流中查找第一个或任何元素。
Java 流 是来自支持聚合操作的源的元素序列。流不存储元素;元素是按需计算的。从集合、数组或 I/O 资源等数据源中使用元素。
findFirst
方法返回一个描述流的第一个元素的 Optional
,或者一个空的 Optional
如果流为空。
findAny
方法返回一个描述流中某些元素的 Optional
,或者一个空的 Optional
如果流为空。
在下一个示例中,我们使用 findFirst
方法。
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
在第二个例子中,我们过滤了一个单词列表,然后找到它的第一个匹配元素。
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
在下一个示例中,我们使用 findAny
方法。
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 findFirst
和 findAny
方法。
List 所有 Java 教程.
地址:https://www.cundage.com/article/java-stream-findfirst-findany.html