computeIfAbsent 使用
时间: 2023-07-11 17:37:52 浏览: 77
`computeIfAbsent()` 是一个 Java 8 新增的方法,用于在 `Map` 中根据 Key 获取 Value,如果 Value 不存在,则可以通过提供的计算函数进行计算并将计算结果存储到 Map 中。该方法的使用示例如下:
```java
Map<String, Integer> map = new HashMap<>();
map.computeIfAbsent("A", k -> 1);
map.computeIfAbsent("B", k -> 2);
map.computeIfAbsent("C", k -> 3);
System.out.println(map.get("A")); // 1
System.out.println(map.get("B")); // 2
System.out.println(map.get("C")); // 3
System.out.println(map.get("D")); // null
```
上述示例中,首先创建了一个空的 HashMap 对象 `map`,然后通过 `computeIfAbsent()` 方法将 Key-Value 存储到 Map 中。其中,计算函数通过 Lambda 表达式实现,如果指定 Key 对应的 Value 已经存在,则不会进行计算,只会返回已有的 Value 值。最后,通过 `get()` 方法获取指定 Key 对应的 Value 值。
需要注意的是,`computeIfAbsent()` 方法仅在 Value 不存在时才会进行计算,如果 Value 已经存在,则不会进行任何操作。此外,在计算函数中也可以根据 Key 和已有的 Value 进行计算,例如:
```java
Map<String, Integer> map = new HashMap<>();
map.computeIfAbsent("A", k -> 1);
map.computeIfAbsent("B", k -> k.length());
System.out.println(map.get("A")); // 1
System.out.println(map.get("B")); // 1
```
上述示例中,计算函数中使用了 Key 和已有的 Value 进行计算,如果 Value 已经存在,则使用已有的 Value 进行计算。因此,对于 Key "B",计算函数返回值为 `1`,而不是 `2`。
阅读全文