第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Optional.orElse:如何繼續(xù)流?

Optional.orElse:如何繼續(xù)流?

慕無忌1623718 2021-10-27 09:54:50
我想使用 Stream 方法,但我覺得它有點次優(yōu)。我想避免混淆.map(Optional::of)是否可以使用下面的方法 #2 來避免這種額外的混淆,是否有可選的方法可以用來實現(xiàn)我想要的?// Either map can be null, empty, or have the value for keyMap<String,String> map1 =  Map<String,String> map2 = // Method #1String value1 = null;if (map1 != null) {   value1 = map1.get(key);}if (value1 == null) {   if (map2 != null) {      value1 = map2.get(key);   }}if (value1 == null) value1 = "default";// Method #2String value2 = Optional.ofNullable(map1)    .map(map -> map.get(key))    .map(Optional::of)    .orElse(Optional.ofNullable(map2).map(map -> map.get(key)))    .orElse("default");assertEquals(value1, value2);我想要這樣的東西:Optional.ofNullable(map1)    .map(map -> map.get(key))    .orOptional(Optional.ofNullable(map2).map(map -> map.get(key)))    .orElse("default");其中 orOptional 類似于: // 如果此 Optional 中存在值,則返回此可選,否則返回 fallback Optional orOptional(Optional fallback)編輯 2018-10-15:為了不被我在示例中使用地圖的事實所困擾,讓我們假設(shè)這些只是一些帶有 getter 值的 bean。bean 可以為 null,或者 getter 返回的值可以為 null。
查看完整描述

2 回答

?
九州編程

TA貢獻1785條經(jīng)驗 獲得超4個贊

你不需要


.map(map -> map.get(key))

        .map(Optional::of)

Optional.map也返回Optional。你可以寫


Optional.ofNullable(map1)

                .map(map -> map.get(key))

                .orElseGet(() ->

                        Optional.ofNullable(map2)

                                .map(map -> map.get(key)).orElse("default")

                );

此外,您可以創(chuàng)建一個映射流,然后進行一些轉(zhuǎn)換:


Stream.of(map1, map2)

  .filter(Objects::nonNull)

  .map(m -> m.get(key))

  .filter(Objects::nonNull)

  .findFirst()

  .orElse("default");


查看完整回答
反對 回復 2021-10-27
?
明月笑刀無情

TA貢獻1828條經(jīng)驗 獲得超4個贊

讓地圖變量變成null.

如果您無法修復映射的來源,您至少應該在null處理過程中盡早引入包含非映射的局部變量。

Map<String,String> m1 = map1 == null? Map.of(): map1, m2 = map2 == null? Map.of(): map2;

Map.of()需要 Java 9。在 Java 8 中,您可以Collections.emptyMap()改為使用。

那么,你的任務就這么簡單

String value1 = m1.getOrDefault(key, m2.getOrDefault(key, "default"));


查看完整回答
反對 回復 2021-10-27
  • 2 回答
  • 0 關(guān)注
  • 223 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號