递归和泛型判断多级Map集合中get(key)==null问题

工作中经常用到多级map集合存在基础数据,后期对基础数据操作是,通过key获取map时有时会出现null对象导致出现空指针异常,比如

Map>> map

V = map.get(k1).get(k2).get(k3);当map中不存在k1或k2的映射时,出现null.get(key),造成空指针异常。

代码如下:

public static  boolean checkKeyNull(T obj, T... k) {
        if (k.length > 0) {
            if (obj instanceof Map) {
                boolean isMap = ((Map) obj).keySet().contains(k[0].toString());
                if (isMap) {
                    Map o = (Map) ((Map) obj).get(k[0]);
                    if (k.length == 1) {
                        return true;
                    } else {
                        String[] keyStr = new String[k.length - 1];
                        for (int i = 1; i < k.length; i++) {
                            keyStr[i - 1] = (String) k[i];
                        }
                        boolean isflag = checkKeyNull(o, keyStr);
                        if (!isflag) {
                            return false;
                        }
                    }
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
        return true;
    }

public static void main(String[] args)  {

        Map>> mapMap = new HashMap<>();
        Map map = new HashMap<>();
        for (int i = 0; i < 5; i++) {
            map.put("key" + i, i);
        }
        HashMap map1 = new HashMap();
        map1.put("bandi", map);
        mapMap.put("xuexiao", map1);
        boolean iskey = StringUtils.checkKeyNull(mapMap, "xuexiao", "ss");
        log.info("" + iskey);
    }

 

你可能感兴趣的:(javaweb,公共方法,工具类)