Map中getOrDefault()与数值进行比较

一般用哈希表计数时,value类型通常为Integer。如果想比较某个key出现的次数,使用get(key)与某个数值进行比较是有问题的。当哈希表中并不包含该key时,因为此时get方法返回值是null,用null和一个数值作比较是会报NullPointerException异常的。那么就有两个问题来了:
(1)为什么报出的异常是NullPointerException类型?
(2)该怎么处理?

为什么报出的异常是NullPointerException类型?
get方法返回的是Integer类型的引用变量,要想将结果与基本数据类型相比较需要有一个拆箱的过程,而null是不能被转换为任何一个基本类型数据的,也就是拆箱的过程出了问题,所以会报NullPointerException类型的异常。
该怎么处理?
使用getOrDefault方法。getOrDefault(key,0)与数值进行比较。

上一篇:C# Abp框架入门系列文章(一)


下一篇:线上故障-java自动拆箱导致的线上NullPointerException