浅谈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值,会抛出异常吗?就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IDEA不识别Java文件:文件变橙色&显示后缀名.java的解决

    IDEA不识别Java文件:文件变橙色&显示后缀名.java的解决

    这篇文章主要介绍了IDEA不识别Java文件:文件变橙色&显示后缀名.java的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • springboot多模块化整合mybatis,mapper自动注入失败问题及解决

    springboot多模块化整合mybatis,mapper自动注入失败问题及解决

    这篇文章主要介绍了springboot多模块化整合mybatis,mapper自动注入失败问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • mybatis 根据id批量删除的实现操作

    mybatis 根据id批量删除的实现操作

    这篇文章主要介绍了mybatis 根据id批量删除的实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • SpringBoot结合Swagger2自动生成api文档的方法

    SpringBoot结合Swagger2自动生成api文档的方法

    这篇文章主要介绍了SpringBoot结合Swagger2自动生成api文档的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • 使用svn管理Maven项目的方法步骤

    使用svn管理Maven项目的方法步骤

    这篇文章主要介绍了使用svn管理Maven项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 简单了解JAVA NIO

    简单了解JAVA NIO

    这篇文章主要介绍了JAVA NIO的的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • java如何根据IP获取当前区域天气信息详解

    java如何根据IP获取当前区域天气信息详解

    根据IP自动获取当地的天气预报信息这个功能大家应该都遇到过,天气预报信息用途非常广泛,篇文章主要给大家介绍了关于java如何根据IP获取当前区域天气信息的相关资料,需要的朋友可以参考下
    2021-08-08
  • springboot整合mongodb并实现crud步骤详解

    springboot整合mongodb并实现crud步骤详解

    这篇文章主要介绍了springboot整合mongodb并实现crud,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • SpringBoot项目中jar发布获取jar包所在目录路径的最佳方法

    SpringBoot项目中jar发布获取jar包所在目录路径的最佳方法

    在开发过程中,我们经常要遇到上传图片、word、pdf等功能,但是当我们把项目打包发布到服务器上时,对应的很多存储路径的方法就会失效,下面这篇文章主要给大家介绍了关于SpringBoot项目中jar发布获取jar包所在目录路径的相关资料
    2022-07-07
  • Java 实战项目之学生信息管理系统的实现流程

    Java 实战项目之学生信息管理系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现学生信息管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11

最新评论