putIfAbsent具体是啥
时间: 2024-02-28 07:22:00 浏览: 158
`putIfAbsent` 是一个方法,它用于在 Map(例如 Java 中的 HashMap)中插入一个键值对,但只有在指定的键不存在时才进行插入。如果该键已经存在,则 `putIfAbsent` 方法不会进行任何操作并返回已存在的值。如果键不存在,则会将指定的键值对插入到 Map 中并返回 `null`。
在你提供的代码中,`putIfAbsent` 方法被用来将 `indices[i]` 作为键,将一个新的 `ArrayList<Integer>` 实例作为值插入到 `ops` Map 中。如果 `indices[i]` 已经存在于 `ops` 中,则不会进行任何操作;如果不存在,会将键值对插入到 `ops` 中。
相关问题
java putIfAbsent
`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}`。
ConcurrentHashMap.putIfAbsent
ConcurrentHashMap.putIfAbsent()是ConcurrentHashMap类提供的一个原子操作,它的作用是在指定的key不存在时,将指定的value放入到ConcurrentHashMap中。如果指定的key已经存在,则不进行任何操作。这个方法的具体实现细节可以参考《ConcurrentHashMap之实现细节》。
阅读全文