ConcurrentHashMap.compute
时间: 2024-09-27 15:00:30 浏览: 57
Java Platform SE 8.chm.zip
`ConcurrentHashMap.compute()` 是 Java 中的一个方法,它属于 `java.util.concurrent.ConcurrentHashMap` 类,这是一个线程安全的哈希映射。`compute()` 方法主要用于原子地更新键值对,当需要基于现有键执行某种计算并替换原有值时非常有用。
该方法的基本语法如下:
```java
V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction, Function<? super K,? extends V> mappingFunction)
```
这里参数解释:
- `key`: 要查找或更新的键。
- `remappingFunction`: 如果键存在,则提供一个新的值。这个函数会接收当前的键和值作为输入,并返回新的值。
- `mappingFunction`: 如果键不存在,此函数将用于创建新键值对。它接收键作为输入,并返回新的值。
例如,如果你想根据旧的值生成一个新的值,可以这样做:
```java
V newValue = map.compute(key, (oldValue, currentValue) -> oldValue * 2);
```
如果 `key` 存在并且 `oldValue` 非空,`newValue` 将是 `oldValue * 2`;如果 `key` 不存在,`newValue` 将是 `mappingFunction` 的结果。
阅读全文