浅谈Map集合中get不存在的key值,会抛出异常吗?

 更新时间:2020年09月22日 11:34:14   作者:只想发财  
这篇文章主要介绍了浅谈Map集合中get不存在的key值,会抛出异常吗?具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,大家还是直接看代码吧~

public static void main(String[] args)
{
 Map<String, String> a = new HashMap<String, String>();
 String string = a.get("a111");
 System.out.println(string);
}

在Map集合中,get一个不存在的值,不会抛出异常,获得的返回值为null。

补充知识:map中get不存在的key和containsKey方法

在Map集合中,get一个不存在的值,不会抛出异常,获得的返回值为null。

public static void main(String[] args)
{
 Map<String, String> a = new HashMap<String, String>();
 String string = a.get("a111");
 System.out.println(string);
}

Map集合允许值对象为null,并且没有个数限制,所以当get()方法的返回值为null时,可能有两种情况,一种是在集合中没有该键对象,另一种是该键对象没有映射任何值对象,即值对象为null。因此,在Map集合中不应该利用get()方法来判断是否存在某个键,而应该利用containsKey()方法来判断,例如下面的例子。

下面的代码首先创建一个由HashMap类实现的Map集合,并依次向Map集合中添加一个值对象为null和“马先生”的映射;然后分别通过get()和containsKey()方法执行这两个键对象;最后执行一个不存在的键对象。关键代码如下:

import java.util.HashMap;
import java.util.Map;
 
public class TestMapKey {
 public static void main(String[] args) {
 Map<Integer, String> map = new HashMap<Integer, String>();
 map.put(220180, null);
 map.put(220181, "马先生");
 System.out.println("get()方法的返回结果:");
 System.out.print("------ " + map.get(220180));
 System.out.print("  " + map.get(220181));
 System.out.println("  " + map.get(220182));
 System.out.println("containsKey()方法的返回结果:");
 System.out.print("------ " + map.containsKey(220180));
 System.out.print("  " + map.containsKey(220181));
 System.out.println("  " + map.containsKey(220182));
 }
}

执行上面的代码,在控制台将输出如下信息:

get()方法的返回结果:

------ null 马先生 null

containsKey()方法的返回结果:

------ true true false

结论:Map集合中不应该利用get()方法来判断是否存在某个键,因为可能map的key值存在但value的值为null

今天被这个坑了,记录一下

以上这篇浅谈Map集合中get不存在的key值,会抛出异常吗?就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java将word文件转成pdf文件的操作方法

    Java将word文件转成pdf文件的操作方法

    这篇文章主要介绍了Java将word文件转成pdf文件的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • java中Ajax与Axios的使用小结

    java中Ajax与Axios的使用小结

    在项目中我们经常会遇到需要向请求头中添加消息的场景,本文主要介绍了java中Ajax与Axios的使用小结,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • java实现中英文混合字符截取方法

    java实现中英文混合字符截取方法

    这篇文章主要为大家详细介绍了java实现中英文混合字符的截取方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 详解使用MyBatis Generator自动创建代码

    详解使用MyBatis Generator自动创建代码

    这篇文章主要介绍了使用MyBatis Generator自动创建代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 在Eclipse中运行Solr 基础知识

    在Eclipse中运行Solr 基础知识

    Solr我还是个菜鸟,写这一些文章只是记录一下最近一段时间学习Solr的心得,望各位同仁不要见笑,还希望多多指点
    2012-11-11
  • @Cacheable 拼接key的操作

    @Cacheable 拼接key的操作

    这篇文章主要介绍了@Cacheable 拼接key的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Spring Boot Admin 添加报警提醒和登录验证功能的具体实现

    Spring Boot Admin 添加报警提醒和登录验证功能的具体实现

    报警提醒功能是基于邮箱实现的,当然也可以使用其他的提醒功能,如钉钉或飞书机器人提醒也是可以的,但邮箱报警功能的实现成本最低,所以本文我们就来看邮箱的报警提醒功能的具体实现
    2022-01-01
  • 关于动态参数使用@PathVariable的解析

    关于动态参数使用@PathVariable的解析

    这篇文章主要介绍了关于动态参数使用@PathVariable的解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • java实现图片反色处理示例

    java实现图片反色处理示例

    这篇文章主要为大家详细介绍了java实现图片反色处理示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • java读取文件内容,解析Json格式数据方式

    java读取文件内容,解析Json格式数据方式

    这篇文章主要介绍了java读取文件内容,解析Json格式数据方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09

最新评论