computeifabsent
时间: 2023-09-08 10:10:59 浏览: 79
`computeIfAbsent` 是 Java 8 中 Map 接口提供的一个方法,它的作用是:如果 key 对应的 value 不存在,则使用给定的 mapping function 计算 value,并将 (key, value) 存储到 map 中,最后返回 value。如果 key 对应的 value 已经存在,则直接返回该 value。
下面是 `computeIfAbsent` 方法的函数签名:
```java
V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction);
```
其中:
- `key`:要计算 value 的 key。
- `mappingFunction`:计算 value 的函数。
示例代码:
```java
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
// 如果 key "two" 对应的 value 不存在,则计算并存储
Integer val = map.computeIfAbsent("two", k -> k.length());
System.out.println(val); // 输出 3
// 如果 key "one" 对应的 value 已经存在,则直接返回
val = map.computeIfAbsent("one", k -> k.length());
System.out.println(val); // 输出 1
```
在上面的代码中,`"two"` 对应的 value 不存在,所以 `mappingFunction` 计算 `"two"` 的长度为 3,并将 (`"two"`, 3) 存储到了 map 中。而 `"one"` 对应的 value 已经存在,所以直接返回了该 value。
阅读全文