【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);
}
推荐阅读