当我们尝试访问一个不存在的键时,Map会返回null值。这在某些情况下可能会导致错误。
当获取某个对象的值进行一些操作,如果map的value值为空,就会抛出空指针异常
因此Java 8引入了一个新的方法getOrDefault(),该方法可用于解决这个问题。
getOrDefault()方法的语法如下:
该方法接受两个参数:要查找的键和默认值。如果键存在,则返回与该键关联的值,否则返回指定的默认值。
default V getOrDefault(Object key, V defaultValue) {
V v;
return (((v = get(key)) != null) || containsKey(key))
? v
: defaultValue;
}
使用场景:
1. 构造Map参数格式
Map<String, List<String>> map = new HashMap<String, List<String>>();
String key = "";
// 使用getOrDefault 直接获取对应key的 value 避免NPE
List<String> list = map.getOrDefault(key, new ArrayList<String>());
2. 读取返参对象
// 获取返参进行处理
Map<String, JSONObject> map = JSON.parseObject(result.getData());
String key = "";
// 使用getOrDefault 直接获取对应key的 value 避免NPE
JSONObject obj = map.getOrDefault(key, new JSONObject());