map putifabsent
时间: 2024-01-29 12:04:18 浏览: 34
`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
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方法是一个Java的Map接口的方法,用于将指定的键值对添加到Map中,但是只有在该键不存在时才会执行添加操作。如果指定的键已经存在于Map中,则putIfAbsent方法不会执行任何操作,也不会改变原有的键值对。
该方法的签名如下:
V putIfAbsent(K key, V value)
其中,key表示要添加到Map中的键,value表示要与键关联的值。如果key不存在于Map中,则将key和value添加到Map中,并返回null。如果key已经存在于Map中,则不执行任何操作,并返回与key关联的当前值。
示例代码如下所示:
```java
Map<String, Integer> map = new HashMap<>();
map.put("key1", 1);
// 添加新的键值对
Integer oldValue = map.putIfAbsent("key2", 2);
System.out.println(oldValue); // 输出:null
// 对已存在的键执行putIfAbsent操作
oldValue = map.putIfAbsent("key1", 3);
System.out.println(oldValue); // 输出:1,因为键"key1"已经存在,不执行任何操作并返回当前值1
```
在上述示例中,首先通过put方法向map中添加了一个键值对"key1"和1。然后使用putIfAbsent方法尝试将键"key2"和值2添加到map中,由于"key2"不存在于map中,所以成功添加,并返回null。接着再次使用putIfAbsent方法尝试将键"key1"和值3添加到map中,由于"key1"已经存在于map中,所以不执行任何操作,并返回与"key1"关联的当前值1。