首页 > 解决方案 > hashmap,java8,空/空检查

问题描述

我有一张地图如下:

private Map<String, Object> map = new HashMap<>();

此映射包含其键值对:

关键 价值

myKey-> value

value-> Another value

如上所示,这个映射要么是空的,要么有键值对,包括上面的键值(myKeyvalue作为value下一个元素的键)。

我想检查这张地图是否:

是否为空

myKeyvalue如果有,有Another value。我的代码有很多if else所以想用更好的方法来避免Another value

  if (map.isEmpty()) {
        if (map.get(myKey) != null || StringUtils.isNotBlank(map).get(myKey).toString())) {
            String nextKey = map.get(myKey).toString();
            if (StringUtils.isNotBlank(nextKey) && map.get(nextKey) != null
                    && StringUtils.isNotBlank(map.get(nextKey).toString())) {
                String finalValue = map.get(nextKey).toString();
            }
        }

    } else {
        flag = true; 
    }

标签: javajava-8

解决方案


您可以使用 Map 的containsKey方法来避免多个if

Map<String,String> map = new HashMap<>();
    if(map.containsKey(myKey) && StringUtils.isNotBlank(map.get(myKey)) 
                             && map.containsKey(map.get(myKey))) {
        flag=false;
    } else {
        flag=true
    }

上述代码的更简化版本是

flag = StringUtils.isBlank(map.get(myKey)) || !map.containsKey(map.get(myKey));


推荐阅读