解决Map集合使用get方法返回null抛出空指针异常问题

目录
  • 前言
  • 空指针问题
  • 原因
  • map.get,小心get出一个空指针

前言

1.Map里面只能存放对象,不能存放基本类型,例如int,需要使用Integer

2.Map集合取出时,如果变量声明了类型,会先进行拆箱,再进行转换。

空指针问题

如图,在程序执行到27行时,出现了空指针异常.按道理来讲,对于Map集合是有Key和Value的,Collection集合是只有Value。如果执行get()方法,当不存在key时,对应的应该返回null。

map.get(s.charAt(i));

因此 由于不存在key“)”,应该返回null

但是却报了空指针异常。

原因

map.get(s.charAt(i));会先返回数据原本类型Character,当数据为null时,拆箱转成null将抛出空指针异常。

以下同理

进行if判断时,map.get()方法会将取出的Character转成表达式同类型的变量,由于是null 拆箱成char时将会抛异常。

map.get,小心get出一个空指针

map.get,get出来的可能是个空,拿着个参数做处理前一定要判断,或者用getOrDefault

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java8新特性之空指针异常的克星Optional类的实现

    Java8新特性系列我们已经介绍了Stream.Lambda表达式.DateTime日期时间处理,最后以"NullPointerException" 的克星Optional类的讲解来收尾. 背景 作为开发人员每天与NullPointerException斗智斗勇.每接收到参数或调用方法获得值得判断一下是否为null.稍不留意,空指针异常就像幽灵一样出现了. 这篇文章我们来学习Java8是如何通过Optional类来避免空指针异常的. 先来看一下不使用Optional类时,我们为了防止N

  • java.lang.NullPointerException 如何处理空指针异常的实现

    当应用程序试图null在需要对象的情况下使用时抛出.这些包括: 调用null对象的实例方法. 访问或修改null对象的字段. 把长度null当作一个数组. 像访问或修改null阵列一样访问或修改插槽. 投掷null就好像它是一个Throwable 价值. 应用程序应该抛出此类的实例来指示null对象的其他非法使用. NullPointerException对象可以由虚拟机构造,就像抑制被禁用和/或堆栈跟踪不可写一样. 为什么我们需要空值? 如前所述,nullJava是一种特殊的值. 它在编码某些

  • 详解Java8新特性Stream之list转map及问题解决

    List集合转Map,用到的是Stream中Collectors的toMap方法:Collectors.toMap 具体用法实例如下: //声明一个List集合 List<Person> list = new ArrayList(); list.add(new Person("1001", "小A")); list.add(new Person("1002", "小B")); list.add(new Person

  • Java String转换时为null的解决方法

    开发中经常遇到从集合类List.Map中取出数据转换为String的问题,这里如果处理不好,经常会遇到空指针异常java.lang.NullPointerException,在此总结一下常用转换为String的方法,以及转换后如何对其进行判null使用的问题. Java中对象转换为String的常用方法: 方法一:String  objStr  =  (String) obj: 强制类型转换,对象obj为null,结果也为null,但是obj必须保证其本质是String类型的值,即可转换的值.

  • 解决Map集合使用get方法返回null抛出空指针异常问题

    目录 前言 空指针问题 原因 map.get,小心get出一个空指针 前言 1.Map里面只能存放对象,不能存放基本类型,例如int,需要使用Integer 2.Map集合取出时,如果变量声明了类型,会先进行拆箱,再进行转换. 空指针问题 如图,在程序执行到27行时,出现了空指针异常.按道理来讲,对于Map集合是有Key和Value的,Collection集合是只有Value.如果执行get()方法,当不存在key时,对应的应该返回null. map.get(s.charAt(i)); 因此 由

  • 解决lambda表达式内出现异常无法throw抛出的问题

    目录 lambda表达式内出现异常无法throw抛出 问题描述 问题原因 解决方案 lambda表达式中无法抛出受检异常 lambda表达式内出现异常无法throw抛出 问题描述 今儿在使用lambda表达式时,lambda表达式内出现了异常,准备直接抛出,没想到却还是报错: 由于博主lambda表达式用的比较少,刚看到这问题时,可以说是一脸懵逼.毕竟两边的提示可以说是前后矛盾啊. 刷新几下编译器还是报错,就只能老老实实的找原因. 问题原因 所幸Java是一门比较成熟的语言,前辈们已经踩了足够的

  • Java中Map集合(接口)的基本方法程序演示

    本文实例为大家分享了Java中Map集合的基本方法程序演示的具体代码,供大家参考,具体内容如下 package pack02; import java.util.*; public class MapDemo { public static void main(String[] args) { //定义一个Map接口类型的引用,指向HashMap类型的对象 Map<String,String> ma = new HashMap<String, String>(); ma.put(&

  • Java8中利用stream对map集合进行过滤的方法

    前言 Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找.遍历.过滤以及常见计算等. 最近公司在大张旗鼓的进行代码审核,从中也发现自己写代码的不好习惯.一次无意的点到了公司封装的对map集合过滤的方法,发现了stream.于是研究了一下.并对原有的代码再次结合Optional进行重构下 原有方法说明 主要处理过滤条件Map对象,过滤掉了null和空字符串 等操作 这

  • Mybatis返回map集合时,列的顺序与select不一致问题

    目录 返回map集合,列的顺序与select不一致 mybatis中返回map集合问题 1.mapper.xml中写一个查询返回map的sql 2.mapper.java 对应接收 3.错误写法 4.正确写法 返回map集合,列的顺序与select不一致 <select id="queryPercentByAsset" resultType="java.util.HashMap"> 将Hashmap换成LinkedHashMap即可 <select

  • JAVA遍历Map集合的几种方法汇总

    今天学习了Map集合的几种方法,尤其是遍历Map集合感觉尤为重要,所以发出来供大家学习和自己复习以用. 众所周知Map集合里存储元素是以键值对的方式存储元素,一个是Key一个是value. 开发过程中推荐使用第四种方法,本文章注释很清晰,仔细看完相信会对你有所帮助的! 方法一: 首先去通过获取迭代器,通过迭代器去遍历集合,获取key然后通过key去获取value,然后就完成了Map集合元素的遍历 public static void main(String[] args) { //使用泛型去创建

  • Java实现Map集合二级联动示例

    Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省市级联选择框,当选择省份信息时,将改变城市下拉选择框对应的内容. 思路分析: 1. 创建全国(省,直辖市,自治区)映射集合,即LinkedHashMap对象,使用Map接口的put()方法向集合中添加指定的省与城市的映射关系,其中值为String型一维数组. 代码如下: CityMap.java 复制代码 代码如下: import

  • Java基础Map集合详析

    目录 一.概述 二.创建Map集合的对象方式 四.Map的获取方法 五.Map集合的遍历方式 方式一: 方式二: 一.概述 Interface Map k:键的类型:V:值的类型 将键映射到值的对象:不能包含重复的键:每个键可以映射到最多一个值 二.创建Map集合的对象方式 1.使用多态的方式 2.具体实现类HashMap public static void main(String[] args) {       //创建Map集合对象       Map<String,String> m=

  • Java集合类之Map集合的特点及使用详解

    目录 1.Map集合概述和使用 1.1 Map集合概述 1.2 Map集合常用方法 1.3 Map集合的遍历 1.Map集合概述和使用 1.1 Map集合概述 java.util接口 Map<K,V> 类型参数: K - 此映射所维护的键的类型 V - 映射值的类型 public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 是一

  • PHP处理Json字符串解码返回NULL的解决方法

    本文实例讲述了PHP处理Json字符串解码返回NULL的解决方法.分享给大家供大家参考之用.具体方法如下: 一般来说,php对json字符串解码使用json_decode()函数,第一个参数传字符串,第二个参数若为true,返回array:若为false,返回object.如果返回NULL,说明报错,输出json_last_error(),得到的整数值对应错误提示.如下图所示: json_last_error()比较常见的是整数4, 是json字符串在json_decode之前已不完整,所以语法

随机推荐