java判断map是否有key的常用方法

 更新时间:2025年12月26日 08:36:58   作者:悟能不能悟  
这篇文章主要为大家详细介绍了java中判断map是否有key的常用方法,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解

在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的方式。

到此这篇关于java判断map是否有key的常用方法的文章就介绍到这了,更多相关java map判断是否有key内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot详细打印启动时异常堆栈信息详析

    Spring Boot详细打印启动时异常堆栈信息详析

    这篇文章主要给大家介绍了关于Spring Boot详细打印启动时异常堆栈信息的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • Mybatis中Mapper标签总结大全

    Mybatis中Mapper标签总结大全

    这篇文章主要介绍了Mybatis中Mapper标签总结大全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Java 多线程传值的四种方法

    Java 多线程传值的四种方法

    这篇文章主要介绍了Java 多线程传值的四种方法,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • Java GUI编程菜单组件实例详解

    Java GUI编程菜单组件实例详解

    在实际开发中,除了主界面,还有一类比较重要的内容就是菜单相关组件,可以通过菜单相关组件很方便的使用特定的功能,今天通过本文给大家介绍下Java GUI编程菜单组件实例详解,感兴趣的朋友一起看看吧
    2022-04-04
  • Java ArrayList的底层实现方法

    Java ArrayList的底层实现方法

    今天小编就为大家分享一篇Java ArrayList的底层实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • springboot 项目某个接口响应特别慢问题排查分析

    springboot 项目某个接口响应特别慢问题排查分析

    文章描述了一个Spring Boot项目中某个接口请求日志显示耗时极短,但通过Postman发起相同请求时耗时显著增加的问题,经过排查,发现耗时主要集中在自定义的ControllerInterceptor中的logBefore方法,特别是SensitiveInfoSerialize.getJson方法,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Response.AddHeader案例讲解

    Response.AddHeader案例讲解

    这篇文章主要介绍了Response.AddHeader案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • JAVA实现深拷贝的几种方式代码

    JAVA实现深拷贝的几种方式代码

    这篇文章主要给大家介绍了关于JAVA实现深拷贝的几种方式,在Java中深拷贝和浅拷贝是用来复制对象的两种不同方式,深拷贝会对所有数据类型进行拷贝,包括对象所包含的内部对象,需要的朋友可以参考下
    2023-09-09
  • IDEA中设置Tab健为4个空格的方法

    IDEA中设置Tab健为4个空格的方法

    这篇文章给大家介绍了代码缩进用空格还是Tab?(IDEA中设置Tab健为4个空格)的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-03-03
  • java反射之Method的invoke方法实现教程详解

    java反射之Method的invoke方法实现教程详解

    这篇文章主要给大家介绍了关于java反射之Method的invoke方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论