computeIfAbsent方法
时间: 2023-12-05 14:38:19 浏览: 76
computeIfAbsent是Java 8中Map接口新增的一个方法,用于在Map中根据指定的键获取对应的值,如果该键不存在,则使用指定的函数计算出一个默认值并将其存储到Map中,最后返回该默认值。该方法的语法如下: V Map.computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)。该方法可以方便地实现Map中键值对的添加和获取操作,避免了繁琐的判断和操作过程。
相关问题
map的computeIfAbsent方法是什么
`Map.computeIfAbsent(key, mappingFunction)` 是一个 Java 8 引入的方法,它的作用是如果 `Map` 中没有指定键的映射,则尝试使用给定的映射函数计算其值并将其输入到 Map 中。
具体来说,如果 `Map` 中不存在指定的键,则 `mappingFunction` 函数会被调用,该函数的参数是指定的键,返回值是要与键关联的值。如果函数返回一个非空值,则此方法将该值与键关联并返回它;否则,此方法返回 null。
该方法的目的是在需要进行映射计算时,避免出现冗余的计算。当我们需要对一个键进行映射操作时,如果在 Map 中已经存在该键,则直接返回该键对应的值;如果不存在该键,则通过给定的映射函数计算出相应的值并添加到 Map 中。这样就可以避免重复计算,提高了程序的效率。
map的computeIfAbsent方法的作用
map的computeIfAbsent方法的作用是在给定的key不存在时,使用指定的映射函数计算并填充该key的值,并返回计算的结果。如果key已经存在,则直接返回对应的值。
这个方法的底层实现是通过先尝试获取key的值,如果获取不到则利用传入的计算函数计算新的值,并将计算的结果填充到map中。最后返回计算的结果。
下面是一个示例代码演示了computeIfAbsent方法的使用:
```java
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// 使用computeIfAbsent方法计算并填充key的值
int value = map.computeIfAbsent("lisi", k -> k.length());
System.out.println("计算的结果:" + value); // 输出:计算的结果:4
// 再次获取key的值,已存在,直接返回
int existingValue = map.computeIfAbsent("lisi", k -> k.length());
System.out.println("已存在的值:" + existingValue); // 输出:已存在的值:4
}
}
```
阅读全文