java putIfAbsent
时间: 2023-10-19 08:36:15 浏览: 193
`putIfAbsent` 是 Java 中 `Map` 接口定义的一个方法。它的作用是在指定的键不存在时,将指定的值与键关联起来,并将其放入 `Map` 中。
具体语法如下:
```java
V putIfAbsent(K key, V value)
```
参数解释:
- `key`:要关联的键。
- `value`:要与键关联的值。
该方法的返回值表示与给定键关联的旧值。如果键不存在,则返回 `null`。
示例用法:
```java
Map<Integer, String> map = new HashMap<>();
map.put(1, "Java");
map.putIfAbsent(2, "Python");
map.putIfAbsent(1, "C++");
System.out.println(map); // 输出: {1=Java, 2=Python}
```
在上面的示例中,我们先使用 `put` 方法将键值对 `(1, "Java")` 放入 `map` 中。然后使用 `putIfAbsent` 方法尝试将键值对 `(2, "Python")` 放入 `map` 中,因为键 `2` 之前并不存在,所以成功放入。最后又使用 `putIfAbsent` 方法尝试将键值对 `(1, "C++")` 放入 `map` 中,但由于键 `1` 已经存在,所以不会发生变化。最终输出 `map` 的内容为 `{1=Java, 2=Python}`。
相关问题
Java putIfAbsent
### Java `putIfAbsent` 方法使用说明
#### 方法概述
`putIfAbsent()` 是 Java 中 `HashMap` 类的一个重要方法,用于向哈希表中插入键值对。如果指定的键已经存在,则不会更新其对应的值;只有当该键不存在时才会插入新的键值对[^1]。
#### 参数与返回值
- **参数**: 接受两个泛型类型的参数 `(K key, V value)`,分别代表要插入的键和值。
- **返回值**: 如果给定键之前未被映射到任何值(即它是新条目),则返回 `null`; 否则返回先前关联于该键的值[^2]。
#### 示例代码展示基本用法
下面是一个简单的例子展示了如何利用 `putIfAbsent()` 来安全地添加元素而不意外覆盖已有数据:
```java
import java.util.HashMap;
import java.util.Map;
public class PutIfAbsentExample {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
// 初始化一些数据
map.put("A", "Apple");
// 添加一个新的键值对
map.putIfAbsent("B", "Banana");
System.out.println(map); // 输出:{A=Apple, B=Banana}
// 尝试替换已有的键"A"
map.putIfAbsent("A", "Avocado");
System.out.println(map); // 输出仍然是:{A=Apple, B=Banana}, A 的值没有改变
// 对于不存在的键尝试设置值
Object result = map.putIfAbsent("C", "Cherry");
System.out.println(result == null ? "Key C was not present." : "Previous Value:" + result);
System.out.println(map); // 输出:{A=Apple, B=Banana, C=Cherry}
}
}
```
这段程序首先创建了一个包含单个元素 (`"A"` -> `"Apple"`) 的 `HashMap`. 随后通过调用 `putIfAbsent()` 成功加入了另一个不同的项(`"B"`->`"Banana"`). 当再次试图修改同一个键 `"A"` 所指向的内容时并没有成功,因为这个键已经在集合里有了定义.
最后还演示了对于完全不存在的新键 `"C"` 调用 `putIfAbsent()`, 它正常工作并返回 `null`.
java map putifabsent
### Java Map `putIfAbsent` 方法使用教程
#### 方法概述
`putIfAbsent` 是 Java 中 `Map` 接口的一个方法,在指定键不存在的情况下向映射中插入键值对。如果该键已经存在,则不会替换其对应的旧值[^1]。
#### 参数与返回值
此方法接受两个参数:一个是作为键的对象,另一个是要存储的值对象。当给定的键不在当前映射中存在的时候,将会把这对键值加入到映射里;而一旦这个键已经有了关联的值,那么就不会有任何改变发生,并且会返回原先存在的那个值。如果没有找到对应项则返回 null 或者是自定义类型的默认实例[^3]。
#### 示例代码
下面是一个简单的例子来展示如何使用 `putIfAbsent`:
```java
import java.util.HashMap;
import java.util.Map;
public class PutIfAbsentExample {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
// 初始插入
map.put("A", "Apple");
// 插入新键
map.putIfAbsent("B", "Banana");
System.out.println(map); // 输出:{A=Apple, B=Banana}
// 尝试插入已存在的键
map.putIfAbsent("A", "Avocado");
System.out.println(map); // 输出:{A=Apple, B=Banana}
}
}
```
上述程序展示了基本用法以及尝试更新已有条目的情况下的行为。
通过这种方式,开发者可以在不破坏原有数据结构的前提下安全地添加新的元素至集合之中,同时也提高了多线程环境下的安全性[^4]。
阅读全文
相关推荐















