提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- Map方法computeIfAbsent
- 1.computeIfAbsent 方法的简介
- 2.案例
- computeIfAbsent()
Map方法computeIfAbsent
computeIfAbsent方法是Java 8中引入的一种简化操作Map的方式。
- 该方法通过自动检查键值对是否存在并生成缺失的值,减少了手动检查和插入的样板代码。它不仅使代码更加简洁和易读,还提高了操作的效率和一致性。
1.computeIfAbsent 方法的简介
- 在Java编程中,Map接口提供了一个便捷的方法computeIfAbsent,它可以用来从map中获取key对应的value。如果value不存在,就使用提供的Function创建一个新的value,然后存入map中,最后返回这个新创建的value
2.案例
- 判断map中是否存在,如果存在则添加元素到set中
- 如果不存在则新建set添加到hashMap中
public class TestComputeIfAbsent {
static HashMap<String, Set<String>> hashMap = new HashMap<>();
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("zhangSan");
hashMap.put("china", set);
// 判断map中是否存在,如果存在则添加元素到set中,如果不存在则新建set添加到hashMap中
if (hashMap.containsKey("china")) {
hashMap.get("china").add("liSi");
} else {
Set<String> setTmp = new HashSet<>();
setTmp.add("liSi");
hashMap.put("china", setTmp);
}
System.out.println(hashMap.toString());
}
}
computeIfAbsent()
public class Test01 {
static HashMap<String, Set<String>> hashMap = new HashMap<>();
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("zhangSan");
hashMap.put("china", set);
// after JDK1.8
hashMap.computeIfAbsent("china", key -> {
Set<String> set1 = new HashSet<>();
return set1;
}).add("liSi");
System.out.println(hashMap.toString());
}
}
hashMap.computeIfAbsent(“china”, key -> getValues(key)).add(“liSi”);的意思表示key为“China”的建值对是否存在,返回的是value的值。
- 如果存在则获取china的值,并操作值的set添加数据“lisi"。
- 如果不存在,则调用方法,新创建set结构,将"lisi"添加到set中,再存入到hashMap中。