java中computeIfAbsent
时间: 2023-12-05 08:34:04 浏览: 128
computeIfAbsent()是Java中的一个方法,它可以用于判断一个Map中是否存在指定的key,如果存在,则返回与该key关联的value值;如果不存在,则根据指定的key创建一个新的value值,并将其放入Map中。在上述代码中,computeIfAbsent()方法被用来判断HashMap中是否存在指定的key,如果存在,则向对应的value集合中添加元素,如果不存在,则创建一个新的HashSet并添加元素到集合中,然后将该集合放入HashMap中。
相关问题
java computeIfAbsent
computeIfAbsent是Java 8中Map接口新增的一个方法,用于在Map中根据指定的键获取对应的值。如果该键不存在,则使用指定的函数计算出一个默认值并将其存储到Map中,最后返回该默认值。具体的语法如下:
V Map.computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
其中,key表示要获取值的键,mappingFunction表示计算默认值的函数。如果Map中已经存在指定的键,则直接返回该键对应的值;否则,使用mappingFunction计算出一个默认值,并将该键和默认值存储到Map中,最后返回该默认值。
在上面的示例中,首先创建了一个Map对象,并向其中添加了两个键值对。然后,使用computeIfAbsent方法获取了一个不存在的键"orange"对应的值,由于该键不存在,因此使用指定的函数k -> 0计算出了一个默认值0,并将该键和默认值存储到Map中,最后返回了该默认值。接着,使用computeIfAbsent方法获取了一个已经存在的键"apple"对应的值,由于该键已经存在,因此直接返回了该键对应的值1。
computeIfAbsent
`computeIfAbsent` 是 Java 8 中 `Map` 接口中的一个方法,用于在 `Map` 中根据 key 获取对应的 value,如果 key 对应的 value 不存在,则执行指定的方法生成新的 value,并将其放入到 Map 中。
`computeIfAbsent` 方法的声明如下:
```java
default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
```
其中,`key` 为要获取的 key,`mappingFunction` 则是一个函数式接口,用于生成新的 value。如果 key 存在,直接返回对应的 value;如果 key 不存在,则使用 `mappingFunction` 生成新的 value,并将其放入 Map 中。
示例代码如下:
```java
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
// 获取 key 为 "c" 的 value,如果不存在则生成新的 value
int value = map.computeIfAbsent("c", k -> {
System.out.println("Generating value for key: " + k);
return 3;
});
System.out.println("Value for key c: " + value);
System.out.println("Map: " + map);
```
输出结果如下:
```
Generating value for key: c
Value for key c: 3
Map: {a=1, b=2, c=3}
```
可以看到,由于 Map 中不存在 key 为 "c" 的 value,因此执行了 `mappingFunction` 方法生成新的 value,并将其放入 Map 中。最终 Map 的内容为 `{a=1, b=2, c=3}`。
阅读全文
相关推荐















