map 中的computeifabsent
时间: 2023-07-08 10:14:24 浏览: 122
JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug问题
5星 · 资源好评率100%
`computeIfAbsent` 是 Java 8 中 Map 接口新增的一个方法。它的作用是:如果 key 对应的 value 不存在,则通过调用 mappingFunction 函数计算出一个新的值,并将其与 key 关联。该方法的签名如下:
```
V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
```
其中,key 为要关联的键,mappingFunction 为计算新值的函数。该函数接受一个 key 作为参数,并返回与之关联的新值。
这个方法的使用场景通常是:当我们需要根据某个 key 计算出一个 value 时,如果该 key 对应的 value 已经存在,我们就直接使用现有的 value;如果不存在,我们就根据 key 计算出一个新的 value 并将其与 key 关联。
注意,`computeIfAbsent` 方法只有在 key 对应的 value 不存在时才会计算新值,并将其与 key 关联。如果 key 对应的 value 已经存在,则不会执行 mappingFunction 函数,也不会修改已有的 value。
阅读全文