Java 中使用 putIfAbsent 和 computeIfAbsent 添加元素到 Map
使用 "putIfAbsent" 和 "computeIfAbsent" 向 Map 添加元素:两种方式的对比
在 Java 中,我们可以使用 "putIfAbsent" 和 "computeIfAbsent" 方法来向 Map 添加元素,而不会覆盖现有的键值对。本文将详细介绍这两种方法的用法,并比较其优缺点。
1. 使用 putIfAbsent
使用 "putIfAbsent" 方法,可以先检查 Map 中是否已经存在指定键的键值对,如果不存在则添加新的键值对,否则不进行任何操作。以下是一个示例:
Map<String, List<Integer>> empCodeKeyAndLineValueMap = new HashMap<>();
String empCode = "employee123";
int lineNum = 10;
empCodeKeyAndLineValueMap.putIfAbsent(empCode, new ArrayList<>());
if (empCodeKeyAndLineValueMap.get(empCode) != null) {
empCodeKeyAndLineValueMap.get(empCode).add(lineNum);
}
2. 使用 computeIfAbsent
使用 "computeIfAbsent" 方法,可以先检查 Map 中是否已经存在指定键的键值对,如果不存在则使用提供的函数生成新的值并添加到 Map 中,否则不进行任何操作。以下是一个示例:
Map<String, List<Integer>> empCodeKeyAndLineValueMap = new HashMap<>();
String empCode = "employee123";
int lineNum = 10;
empCodeKeyAndLineValueMap.computeIfAbsent(empCode, k -> new ArrayList<>()).add(lineNum);
比较
- 可读性:"computeIfAbsent" 方法更加简洁,因为它将检查和添加操作都封装在一个方法调用中,提高了代码可读性。
- 效率:在某些情况下,"computeIfAbsent" 方法可能比 "putIfAbsent" 方法更高效,因为它避免了额外的 get 操作。
总结
在大多数情况下,使用 "computeIfAbsent" 方法是更推荐的选择,因为它提供了更好的可读性和效率。但是,如果您的代码需要显式地检查 Map 中是否存在某个键,那么使用 "putIfAbsent" 方法可能更适合。
原文地址: https://www.cveoy.top/t/topic/qfAU 著作权归作者所有。请勿转载和采集!