使用Java 8 的Optional 和Stream::flatMap 變得簡潔
使用Java 8 流時,轉換List
Java 16 解決方案
Java 16 引入了Stream.mapMulti,支援更多簡潔的方法:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();</code>
9 解決方案
JDK 9 增加了Optional.stream,簡化了任務:<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();</code>
Java 8 解決方案
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty()) .findFirst();</code>
<code class="java">static <T> Stream<T> streamopt(Optional<T> opt) { if (opt.isPresent()) return Stream.of(opt.get()); else return Stream.empty(); } Optional<Other> result = things.stream() .flatMap(t -> streamopt(resolve(t))) .findFirst();</code>
以上是如何在 Java Streams 中有效地將物件清單轉換為可選物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!