mputeIfAbsent.computeIfAbse
时间: 2024-05-29 09:07:48 浏览: 56
`computeIfAbsent`方法和`computeIfPresent`方法一样,是Map接口中的默认方法,用于更新Map中的映射。该方法的作用是,如果给定的键在Map中不存在(或者对应的值为null),则计算一个新的值,将键值对加入到Map中;否则不做任何操作。与`computeIfAbsent`类似的方法是`computeIfPresent`,它的作用是,只有给定的键在Map中存在,才计算一个新的值,将键值对加入到Map中。
下面是`computeIfAbsent`方法的使用范例:
<<引用:>>
```java
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
// 如果Map中不存在key为"c"的映射,则创建一个新的映射
// key为"c",value为3,并将其加入到Map中
map.computeIfAbsent("c", key -> {
System.out.println("计算新的值");
return key.length();
});
// 对于已存在的映射,则不做任何操作
map.computeIfAbsent("a", key -> {
System.out.println("计算新的值");
return key.length();
});
```
在上面的代码中,我们创建了一个Map对象,包含两个键值对:"a"->1和"b"->2。接着,我们调用`computeIfAbsent`方法,传入一个不存在于Map中的键"c"。由于Map中不存在key为"c"的映射,因此`computeIfAbsent`方法会计算新的值,这里我们通过`key.length()`返回了键的长度。最终,Map中包含三个键值对:"a"->1、"b"->2和"c"->1。此外,我们还尝试使用已存在于Map中的键"a",但由于Map中已经存在"a"->1的映射,因此`computeIfAbsent`方法不会做任何操作。
下面是`computeIfAbsent`方法的使用场景:
1.如果Map中不存在key为某个值的映射,需要为该键创建一个默认值,然后将其加入到Map中。
2.如果Map中不存在key为某个值的映射,需要查询外部系统或计算出该键所对应的值,并将其加入到Map中。
3.如果Map中不存在key为某个值的映射,需要根据该键创建一个新的对象(例如List、Set),然后将其加入到Map中。
阅读全文