2 回答

TA贡献1785条经验 获得超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")
);
此外,您可以创建一个映射流,然后进行一些转换:
Stream.of(map1, map2)
.filter(Objects::nonNull)
.map(m -> m.get(key))
.filter(Objects::nonNull)
.findFirst()
.orElse("default");

TA贡献1828条经验 获得超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"));
添加回答
举报