Java的Stream API提供了簡潔的編碼解決方案,但在某些情況下可能會帶來挑戰。一種這樣的情況涉及將Optional
給定一個事物列表(List
things.stream().flatMap(this::resolve).findFirst();
但是,flatMap() 需要一個流作為回傳值,而Optional 不提供stream() 方法。
Java 16 引入了Stream.mapMulti(),緩解了這個問題:
Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();
Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();
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();
以上是如何在Java 8中將Optional轉換為Stream?的詳細內容。更多資訊請關注PHP中文網其他相關文章!