如何用一行代码实现Map的条目创建与更新?
Java 中实现类似 C++ map
dict[key] += 1 的简洁写法 在 Java 8 及以上版本,有几种简洁的方式实现你要的效果,无需手动检查键是否存在:
1. 推荐:使用 Map.merge() 方法
这是最贴合需求的写法,一行代码完成“不存在则插入默认值,存在则累加”的逻辑:
Map<String, Integer> map = new HashMap<>(); // 键不存在时插入1,存在则旧值加1 map.merge("targetKey", 1, Integer::sum);
merge 的第三个参数是一个 BiFunction,这里用 Integer::sum 表示将旧值和传入的默认值(1)相加,作为新的 value。
2. 使用 computeIfAbsent() 结合自增
先确保键存在(不存在则设为0),再完成累加操作:
// 先保证键对应的值存在(不存在则设为0),再取出加1后放回 map.put("targetKey", map.computeIfAbsent("targetKey", k -> 0) + 1);
computeIfAbsent 会在键不存在时执行 lambda 创建默认值,返回当前键对应的 value,之后我们加1再 put 回 map。
3. Java 8 之前的写法(手动检查)
如果你的项目还在使用 Java 8 之前的版本,就只能手动判断键是否存在:
Integer current = map.get("targetKey"); if (current == null) { map.put("targetKey", 1); } else { map.put("targetKey", current + 1); }
内容的提问来源于stack exchange,提问作者FIRES_ICE
相关产品推荐
相关产品推荐

