使用Java 8 的可選和Stream::flatMap 變得簡潔
使用Java 8 流時,將List
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();
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3