直接调用 stream().findFirst() 即可,它返回一个 Optional,需安全处理空值情况;基本用法是将 Collection 或数组转为流后调用,返回 Optional<T> 以避免空指针,空流时返回 Optional.empty()。

直接调用 stream().findFirst() 即可,它返回一个 Optional,需安全处理空值情况。
基本用法:获取非空集合的第一个元素
对任意 Collection(如 List、Set)或数组,先转为流,再调用 findFirst():
- 返回类型是
Optional<T>,不是原始元素,避免空指针 - 如果流为空(如空列表),
findFirst()返回Optional.empty() - 示例:
List<String> list = Arrays.asList("a", "b", "c");
Optional<String> first = list.stream().findFirst();
String result = first.orElse("default"); // 得到 "a"
常见安全取值方式
不建议直接用 .get()(可能抛 NoSuchElementException),推荐以下写法:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
orElse(T defaultValue):流为空时返回默认值 -
orElseGet(Supplier<? extends T> supplier):惰性计算默认值,适合开销大的场景 -
orElseThrow(() -> new RuntimeException("not found")):自定义异常 -
ifPresent(System.out::println):仅在有值时执行操作,不返回值
配合 filter 使用找符合条件的第一个
常用于“查找首个满足条件的元素”,比如找第一个偶数:
立即学习“Java免费学习笔记(深入)”;
- List<Integer> nums = Arrays.asList(1, 3, 4, 6, 7);
Optional<Integer> firstEven = nums.stream()
.filter(n -> n % 2 == 0)
.findFirst(); // 返回 Optional[4] - 注意:
filter后流中顺序不变,findFirst()仍按原始顺序取第一个匹配项 - 若无匹配,结果为
Optional.empty()
数组和 Map 的使用示例
数组需先用 Arrays.stream();Map 可对 entrySet 流式处理:
- String[] arr = {"x", "y", "z"};
String first = Arrays.stream(arr).findFirst().orElse(null); - Map<String, Integer> map = new HashMap<>();
map.put("a", 10); map.put("b", 20);
Optional<Map.Entry<String, Integer>> firstEntry =
map.entrySet().stream().findFirst();

















