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");

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"));
添加回答
舉報