解释
只有在当前 Map 中 key 对应的值不存在或为 null 时,才调用 mappingFunction,并在 mappingFunction 执行结果非 null 时,将结果跟 key 关联。mappingFunction 为空时 将抛出空指针异常
应用场景
Map 中的 value 是 List 类型,如下:
Map<String, List<String>> map = new HashMap<>();
传统代码
Map<String, List<String>> map = new HashMap<>();
// 定义list,存放1班的学生名单
List<String> students = null;
// 一般这样写,先判断是否存在
students = map.get("class1");
// 不存在就创建,并放入到 map中
if (students == null) {
students = new ArrayList<>();
map.put("class1", students);
}
// 然后再向 studentsOfClass1 放学生姓名
students.add("李雷");
students.add("韩梅梅");
新写法 - computeIfAbsent
Map<String, List<String>> map = new HashMap<>();
List<String> students = map.computeIfAbsent("class1", k -> new ArrayList<>());
students.add("李雷");
students.add("韩梅梅");