map putIfAbsent
时间: 2024-02-09 09:05:52 浏览: 160
map的putIfAbsent方法是Java中Map接口提供的一个方法,用于向Map中添加键值对,但只有在指定的键不存在时才会执行添加操作。如果指定的键已经存在,则不会进行任何操作,并返回已存在的值。
putIfAbsent方法的语法如下:
V putIfAbsent(K key, V value)
其中,key表示要添加的键,value表示要添加的值。如果key不存在,则将key和value添加到Map中,并返回null;如果key已经存在,则返回已存在的值,不进行任何修改。
这个方法的作用是在并发环境下,可以避免多个线程同时向Map中添加相同的键值对,保证只有一个线程能成功添加。
相关问题
map putifabsent
`Map.putIfAbsent(key, value)` 是一个在 Map 中插入键值对的方法。如果指定的键在 Map 中不存在,则将键值对插入到 Map 中,否则不做任何操作。该方法会返回插入键值对后的值。
示例代码如下:
```java
Map<String, Integer> map = new HashMap<>();
map.put("key1", 1);
// 使用 putIfAbsent 方法插入键值对
Integer value1 = map.putIfAbsent("key1", 2); // 不会插入,返回已存在的值 1
Integer value2 = map.putIfAbsent("key2", 2); // 插入键值对,返回插入的值 2
System.out.println(value1); // 输出 1
System.out.println(value2); // 输出 2
System.out.println(map); // 输出 {key1=1, key2=2}
```
这个方法在多线程环境下可以确保原子性,在并发情况下可以避免竞态条件。
Map putIfAbsent
`putIfAbsent` 是 Java 中 `Map` 接口提供的一个原子操作方法,其作用是在指定的键不存在于映射中(或存在但对应的值为 null)的情况下,将该键与给定的值关联起来。
### 使用场景
当你需要向 map 中添加新的 key-value 对,但是又想避免覆盖已有的数据时,就可以考虑使用这个方法。这可以简化代码逻辑,并且保证线程安全的操作(特别是在并发环境下使用支持此特性的实现如 ConcurrentHashMap 类)。
### 示例代码
```java
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// 创建并初始化 HashMap
Map<String, String> map = new HashMap<>();
// 添加元素到map里
map.put("apple", "苹果");
System.out.println(map); // 输出: {apple=苹果}
// 尝试插入相同的key (如果不存在)
String result1 = map.putIfAbsent("apple", "红苹果");
System.out.println(result1); // 输出现有value: 苹果
System.out.println(map.get("apple")); // 没有改变原value
// 插入新key-value对
String result2 = map.putIfAbsent("banana", "香蕉");
System.out.println(result2 == null); // true 因为之前无此条目
System.out.println(map.get("banana")); // 香蕉
}
}
```
在这个例子中我们看到 `"apple"` 已经存在于 map 当中了所以尝试通过 `putIfAbsent()` 设置它的值并没有成功;而 `"banana"` 则顺利地被加入了进去。
--
阅读全文
相关推荐














