java putIfAbsent
时间: 2023-10-19 11:36:15 浏览: 66
`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如何使用
`putIfAbsent()` 方法是 Java 8 新增加到 `ConcurrentMap` 接口中的方法,它的作用是向 Map 中添加一个键值对,但是只有在该键不存在时才添加,如果该键已经存在,则不做任何操作。
`putIfAbsent()` 方法的使用非常简单,其语法如下:
```java
V putIfAbsent(K key, V value)
```
其中,`key` 表示要添加的键,`value` 表示要添加的值。如果 Map 中已经包含了该键,则返回对应的值;如果 Map 中不包含该键,则添加该键值对,返回 `null`。
例如,以下代码演示了如何使用 `putIfAbsent()` 方法向 Map 中添加一个键值对:
```java
Map<String, Integer> map = new ConcurrentHashMap<>();
map.putIfAbsent("one", 1);
map.putIfAbsent("two", 2);
map.putIfAbsent("one", 3);
System.out.println(map);
```
输出结果为:
```
{two=2, one=1}
```
可以看到,由于 Map 中已经包含了键为 `"one"` 的键值对,因此第三个 `putIfAbsent()` 方法并没有向 Map 中添加任何键值对,而是返回了键为 `"one"` 的旧值 `1`。
需要注意的是,`putIfAbsent()` 方法是线程安全的,可以在多线程环境下使用。如果多个线程同时调用 `putIfAbsent()` 方法,只有一个线程能够成功地向 Map 中添加键值对,其他线程则会返回已经存在的值。
putIfAbsent
putIfAbsent 是Java中的一个Map接口的方法。它的作用是向Map中添加一个键值对,如果该键已经存在则不进行添加,直接返回原有的值。
该方法的定义为:
```java
V putIfAbsent(K key, V value)
```
其中,K代表键的类型,V代表值的类型。当Map中不存在指定的键时,该方法将键值对添加到Map中,并返回null;如果Map中已经存在指定的键,则该方法不进行任何操作,直接返回原有的值。
示例代码:
```java
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
map.putIfAbsent("one", 3);
System.out.println(map.get("one")); // 输出1
```
在上面的代码中,我们先向Map中添加了两个键值对:"one"对应的值为1,"two"对应的值为2。然后使用putIfAbsent方法向Map中添加了一个键值对:"one"对应的值为3。由于Map中已经存在键为"one"的键值对,因此putIfAbsent方法不进行任何操作,直接返回原有的值1。
需要注意的是,putIfAbsent方法是线程安全的,多线程环境下可以安全地使用。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)