首页 > Java > java教程 > 正文

哪种 Java 可选方法最适合将对象映射到可选对象并通过 Stream::flatMap 检索第一个非空结果?

Patricia Arquette
发布: 2024-10-24 03:03:28
原创
287 人浏览过

Which Java Optionals Approach Is Best for Mapping Objects to Optional Objects and Retrieving First Non-Empty Result Via Stream::flatMap?

Java 与 Stream::flatMap 的可选集成

Java 开发人员寻求一种简洁的方法将对象列表映射到可选对象并检索使用Java 8的Stream API的第一个非空结果可能会遇到挑战。

使用things.stream().flatMap(this::resolve).findFirst()的直观方法是不可行的,因为Optional缺少一个流()方法。这导致了对替代解决方案的探索:

Java 16

Java 16 引入了 Stream.mapMulti,实现了以下简洁的解决方案:

<code class="java">Optional<Other> result =
  things.stream()
        .map(this::resolve)
        .<Other>mapMulti(Optional::ifPresent)
        .findFirst();</code>
登录后复制

Java 9

Java 9 引入了Optional.stream,允许这个更简单的解决方案:

<code class="java">Optional<Other> result =
  things.stream()
        .map(this::resolve)
        .flatMap(Optional::stream)
        .findFirst();</code>
登录后复制

Java 8

在 Java 8 中,可以采用以下使用辅助方法的方法:

<code class="java">Optional<Other> result =
  things.stream()
        .map(this::resolve)
        .flatMap(Optional::ofNullable)
        .findFirst();

// Helper method that converts Optional<T> to Stream<T>
private static <T> Stream<T> streamOptional(Optional<T> optional) {
  return optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
}</code>
登录后复制

以上是哪种 Java 可选方法最适合将对象映射到可选对象并通过 Stream::flatMap 检索第一个非空结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!