java map判断是否有key,get(key)+x,否则put(key,x)的新写法

在Java中,可以使用以下几种方式判断Map中是否有key,并进行相应操作:

1. 使用 containsKey()方法(最直观)

复制代码
Map<String, Integer> map = new HashMap<>();

// 方法1:先判断是否存在
if (map.containsKey(key)) {
    map.put(key, map.get(key) + x);
} else {
    map.put(key, x);
}

2. 使用 get()方法判断null(推荐)

复制代码
Map<String, Integer> map = new HashMap<>();

// 方法2:通过get()返回值判断
Integer value = map.get(key);
if (value != null) {
    map.put(key, value + x);
} else {
    map.put(key, x);
}

3. 使用 merge()方法(Java 8+ 最简洁)

复制代码
Map<String, Integer> map = new HashMap<>();

// 方法3:使用merge方法(推荐)
map.merge(key, x, (oldValue, newValue) -> oldValue + newValue);
// 或者使用Integer::sum
map.merge(key, x, Integer::sum);

4. 使用 getOrDefault()方法(Java 8+)

复制代码
Map<String, Integer> map = new HashMap<>();

// 方法4:getOrDefault获取当前值
int currentValue = map.getOrDefault(key, 0);
map.put(key, currentValue + x);

5. 使用 compute()方法(Java 8+)

复制代码
Map<String, Integer> map = new HashMap<>();

// 方法5:使用compute方法
map.compute(key, (k, v) -> v == null ? x : v + x);

性能对比和推荐

方法 优点 缺点
containsKey() 直观易懂,兼容性好 需要两次查找(containsKey + get)
get()判断null 一次查找,性能较好 需要处理null值
merge() 代码简洁,线程安全(在ConcurrentHashMap中) Java 8+ 才支持
getOrDefault() 代码简洁 需要额外变量
compute() 功能强大 代码可读性稍差

推荐: ​ 如果使用Java 8+,优先使用merge()方法,因为它最简洁且性能好。如果使用更早版本,推荐使用get()判断null的方式。

相关推荐
小羊没烦恼!1 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
小蒜学长1 小时前
微信小程序-高校自习室管理系统(代码+数据库+LW)
java·spring boot·后端·微信小程序·自习室管理
鸥梨菌Honevid1 小时前
UVM 中 REQ 和 RSP 类型详解:从通信模型到 item_done 与 put_response
java·前端·servlet
爱吃香菜的初学者1 小时前
十六.Linux——多线程(2)
linux·运维·开发语言
瑞克-桑切斯1 小时前
真实企业场景 运维安全与管理
java·网络·github
jeo陽1 小时前
04-循环实战:素数、最大公约数、级数求和与枚举法
c语言·开发语言·数据结构
老板一杯拿铁2 小时前
Java 八股文面试详解:从基础到进阶的全面梳理
java·面试
const_qiu2 小时前
第 2.5 章 2.5.4-2.5.5:JWT 双 Token 与声明式权限守卫
java·人工智能
暖核2 小时前
kubeadm 集群运维:Worker 节点下线删除、整套集群销毁重建指南
运维·开发语言·php
bug菌2 小时前
一个周末就想把短链服务推到 10 万 QPS,真能靠加 Redis 做到吗?
java·redis·go