computeifabsent和putifabsent
时间: 2024-01-29 07:04:55 浏览: 42
`computeIfAbsent`和`putIfAbsent`都是Map接口中的方法,用于在Map中添加键值对。它们的区别在于,当Map中已经存在指定的键时,`putIfAbsent`方法不会进行任何操作,而`computeIfAbsent`方法会根据指定的函数计算一个新的值并将其与键关联。
下面是两个方法的示例代码:
1. `putIfAbsent`方法示例:
```java
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.putIfAbsent("banana", 2);
map.putIfAbsent("apple", 3);
System.out.println(map); // 输出:{apple=1, banana=2}
```
2. `computeIfAbsent`方法示例:
```java
Map<String, List<String>> map = new HashMap<>();
map.computeIfAbsent("fruits", k -> new ArrayList<>()).add("apple");
map.computeIfAbsent("fruits", k -> new ArrayList<>()).add("banana");
System.out.println(map); // 输出:{fruits=[apple, banana]}
```
在第一个示例中,`putIfAbsent`方法只在Map中不存在"banana"键时才将其添加到Map中,而对于已经存在的"apple"键,不会进行任何操作。
在第二个示例中,`computeIfAbsent`方法会根据"fruits"键是否存在来判断是否需要计算一个新的值。由于"fruits"键在Map中不存在,因此会根据指定的函数创建一个新的ArrayList,并将其与"fruits"键关联。接着,"apple"和"banana"元素会被添加到这个ArrayList中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)