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

【javaweb|递归和泛型判断多级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); }


    推荐阅读