Map.computeIfAbsent
时间: 2023-12-05 10:39:30 浏览: 76
`Map.computeIfAbsent` 是 Java 中 `Map` 接口提供的一个方法,用于在执行某个键的映射值不存在时,通过提供的函数计算并将其放入到 `Map` 中。这个方法可以提供更简洁和优雅的代码,相比于传统的 if-else 语句。下面是一个示例:
```java
Map<String, Integer> map = new HashMap<>();
// 如果 key 不存在,则计算并关联一个值
Integer value = map.computeIfAbsent("key", k -> k.length());
System.out.println("Value: " + value); // 输出:Value: 3
System.out.println("Map: " + map); // 输出:Map: {key=3}
```
上面的代码中,如果 `map` 中不存在键为 `"key"` 的映射,则会计算出 `"key".length()` 的值 `3` 并将其与 `"key"` 关联起来。如果已经存在,则不会进行任何操作。
相关问题
map.computeifabsent
computeIfAbsent 方法是 Java 8 中 Map 接口的一种新方法,它在 map 中查找与指定键关联的值。如果该键不存在,则将指定的值与该键关联,并返回该值。如果该键存在,则返回其关联值。
语法:
V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
参数:
- key - 要在此映射中查找的键。
- mappingFunction - 如果需要,将调用其来计算值的函数。
返回值:
- 如果存在该键的关联值,则返回该值。
- 如果不存在该键的关联值,则使用指定的函数计算值并将其与该键关联,然后返回该值。
示例:
```
Map<String, Integer> map = new HashMap<>();
map.computeIfAbsent("a", key -> key.length());
```
上面这段代码中,如果map中不存在键"a",则使用给定的函数计算值,计算出来的值为1,并将键"a"和值1加入map。
map.computeIfAbsent
`map.computeIfAbsent(key, supplier)` 是 Java 中 `Map` 接口提供的一个方法,用于在 Map 中查找给定键对应的值。如果键存在,则返回该键关联的值;如果键不存在,则使用指定的 `supplier` 函数计算新值并插入到 Map 中,同时返回这个新值。
简单来说,它实现了“如果某个键不存在,就根据给定的函数 `supplier` 来计算并添加新的映射”这一逻辑。这个方法的好处在于提供了懒加载(lazy initialization)的能力,只有在需要的时候才真正创建并存储值,提高了效率。
```java
Map<String, Integer> myMap = new ConcurrentHashMap<>();
int result = myMap.computeIfAbsent("example", key -> {
// 这里会在 "example" 键不存在时计算新值
return 42;
});
```
阅读全文