[英]Nested null check in a map
我正在从外部服务(具有嵌套地图)中提取地图值。 我想在该地图中嵌套几个级别的值并执行一些操作。 以下工作,但有没有更好的方法来做到这一点? 我正在尝试使用Optional
但我认为在这种情况下这是不可能的,因为我无法传入类似于以下内容的方法引用:
Optional.ofNullable(map1)
.map(Map::get)
......
以下是我试图用 Optional 或任何其他建议修改的工作示例。 请指教。
import org.apache.commons.collections.MapUtils;
public class A{
private void methodA(){
Map<String,Object> map1 = getMap(); // getMap() can return null
if(MapUtils.isNotEmpty(map1)){
Map<String, Map<String, String>> map2 = (Map<String, Map<String, String>>) map1.get("key2");
if(MapUtils.isNotEmpty(map2)){
Map<String, String> map3 = map2.get("key3");
if(MapUtils.isNotEmpty(map3)){
// do something
}
}
}
}
这是我找到的最接近的答案,但没有发现它与地图中地图内的嵌套地图相关。 Java 8 嵌套空值检查列表中映射中的字符串
您是否正在寻找:
Optional.ofNullable(map1)
.map(e -> (Map<String, Map<String, String>>) e.get("key2"))
.map(e -> e.get("key3"))
.ifPresent(e->{
// do something
});
您可以使用以下链:
Optional.ofNullable(map1)
.map(m -> m.get("key2"))
.map(m -> m.get("key3"))
.ifPresent(el -> {
// do something
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.