繁体   English   中英

地图中的嵌套空检查

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM