computeIfAbsent的用法
时间: 2023-12-28 15:25:25 浏览: 332
computeIfAbsent是ConcurrentHashMap类中的一个方法,它用于根据指定的键获取对应的值,如果该键不存在,则根据指定的函数生成一个新的值并将其与键关联起来。该方法的用法如下:
```java
V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
```
其中,key表示要获取值的键,mappingFunction表示生成新值的函数。
下面是一个示例代码:
```java
ConcurrentHashMap<String, List<String>> map = new ConcurrentHashMap<>();
map.computeIfAbsent("China", key -> new ArrayList<>()).add("Beijing");
map.computeIfAbsent("China", key -> new ArrayList<>()).add("Shanghai");
map.computeIfAbsent("USA", key -> new ArrayList<>()).add("New York");
System.out.println(map.get("China")); // 输出:[Beijing, Shanghai]
System.out.println(map.get("USA")); // 输出:[New York]
```
在上面的示例中,首先创建了一个ConcurrentHashMap对象map。然后使用computeIfAbsent方法根据键"China"获取对应的值,如果该键不存在,则生成一个新的ArrayList对象并将其与键关联起来。接着再次使用computeIfAbsent方法根据键"China"获取对应的值,由于该键已经存在,所以不会生成新的值。最后使用computeIfAbsent方法根据键"USA"获取对应的值,由于该键不存在,所以生成一个新的ArrayList对象并将其与键关联起来。
阅读全文