」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Java Streams 中有效地將物件清單轉換為可選物件?

如何在 Java Streams 中有效地將物件清單轉換為可選物件?

發佈於2024-11-07
瀏覽:108

How to Efficiently Convert List of Objects to Optional in Java Streams?

使用Java 8 的可選和Stream::flatMap 變得簡潔

使用Java 8 流時,將List 轉換為可選 並有效地提取第一個Other 值可能是一個挑戰。雖然 flatMap 通常需要返回流,但可選的 Stream() 的缺失使問題變得複雜。

Java 16 解決方案

Java 16 引入了Stream.mapMulti,支援更多簡潔的方法:

Optional result = things.stream()
    .map(this::resolve)
    .mapMulti(Optional::ifPresent)
    .findFirst();

Java 9解決方案

JDK 9新增了Optional.stream,簡化了任務:

Optional result = things.stream()
    .map(this::resolve)
    .flatMap(Optional::stream)
    .findFirst();

Java 8解決方案

在Java 8中,可以採取以下方法:

Optional result = things.stream()
    .map(this::resolve)
    .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
    .findFirst();

使用輔助函式將Optional轉換為Stream:

static  Stream streamopt(Optional opt) {
    if (opt.isPresent())
        return Stream.of(opt.get());
    else
        return Stream.empty();
}

Optional result = things.stream()
    .flatMap(t -> streamopt(resolve(t)))
    .findFirst();
版本聲明 本文轉載於:1729667949如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3