news 2026/8/11 8:44:27

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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的方式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/9 9:00:29

Java毕设选题推荐:基于springboot的学院失物招领平台的设计与实现失物信息的发布、查找、管理与互动交流【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/8/1 11:13:22

10000字讲透C++无锁编程:看完就能写出自己的无锁队列

一、多线程编程,绑不开的锁 写多线程程序,最头疼的是什么?数据竞争。 两个线程同时读写同一块内存,结果就是灾难——一个线程刚把计数器读出来准备加1,另一个线程也读了同样的值,两个线程各自加完再写回去,本该加2的计数器只加了1。这种Bug藏得深,复现难,调起来能让…

作者头像 李华
网站建设 2026/7/28 8:21:40

unittest中使用装饰器来实现环境的动态切换

为什么要在测试框架中实现动态切换环境&#xff1f; 多环境验证&#xff1a; 不同的开发阶段&#xff08;如开发、测试、预发布和生产&#xff09;通常有不同的配置参数&#xff0c;包括但不限于数据库连接信息、API密钥、服务器地址等。通过动态切换环境&#xff0c;可以在执…

作者头像 李华
网站建设 2026/8/9 15:36:20

57页精品PPT | 工业互联网平台赋能制造业数字化转型解决方案

当前工厂运营面临多重严峻挑战&#xff1a;设备频繁停机导致生产连续性受阻&#xff0c;人力配置冗余与作业效率低下并存&#xff0c;库存积压与运营成本持续攀升形成恶性循环。订单结构呈现碎片化特征&#xff0c;交付周期延长引发客户满意度显著下降&#xff0c;同时环保合规…

作者头像 李华
网站建设 2026/8/10 18:21:21

Passware Kit:部署和使用分布式密码恢复功能的方法

Passware Kit 系列取证软件是全方位的加密电子证据发现解决方案&#xff0c;可报告和解密计算机和移动设备中所有受密码保护的项目。Passware Kit Ultimate、Forensic、Business 和 Mobile 版本可将密码恢复任务分发到 Windows 和 Linux 计算机网络&#xff0c;以及云代理端上&…

作者头像 李华