我正在使用Stream與findFirst(),它返回可選項,但有一個機會,我的流可能不會發射任何東西,所以我在底部運行orElse運算符。FindFirst和orElse運算符返回不同的類類型
問題是,orElse不會返回可選的類,而是可選的findFirst操作符包裝的類類型。
def optional = categories.categories.stream()
.filter { category -> category.name == selCategory }
.map { category -> loadUniqueIds.call(category) }
.map { UUIDs -> new JsonArray(UUIDs) }
.findFirst().orElse{Optional.of(new JsonArray())}
optional.get()
所以我最終沒有使用findFirst和orElse的可能性。
我在這裏做錯了什麼?
感謝
UPDATE:
我結束了在使用FindFirst後除去否則容易和檢查可選後來
optional.isPresent() ? optional.get(): new JsonArray()
無論如何,如果有人有更好的/優雅的解決方案,請讓我知道。
問候。
什麼是'def optional'應該在Java中? – khelwood
這是groovy,但我使用Java 8流 – paul