在使用 Java 中的 HashMap 时,如果需要将一个元素添加到一个与某个键关联的列表中,传统的方法是先检查该键是否已经存在,如果存在就获取对应的列表,否则创建一个新的列表,然后将元素添加到列表中,最后将列表与键关联起来。

final List<Integer> valueList = map.containsKey(empCode) ? map.get(empCode) : new ArrayList<>();
valueList.add(lineNum);
map.put(empCode, valueList);

这种方法虽然能实现功能,但代码显得冗长,可读性不强。为了优化代码,我们可以使用 HashMap 的 putIfAbsent 方法,该方法可以检查某个键是否存在,如果不存在就将指定的键值对添加到 HashMap 中,如果存在则不进行任何操作。

final List<Integer> valueList = map.putIfAbsent(empCode, new ArrayList<>());
if (valueList == null) {
    valueList = map.get(empCode);
}
valueList.add(lineNum);

使用 putIfAbsent 方法可以避免重复检查键是否存在,提高代码效率。同时,该方法也使代码更加简洁易懂。

注意:

putIfAbsent 方法在添加新键值对时,并不会返回添加到 HashMap 中的列表,而是返回与该键关联的列表。如果该键之前已经存在,则返回与该键关联的列表,否则返回 null。

使用 putIfAbsent 方法优化 HashMap 中的列表添加操作

原文地址: https://www.cveoy.top/t/topic/qfA5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录