java Map中get方法爆错NullPointerException
代码如下:
public class Hello {public static void main(String[] args) {Map<Integer,Integer> map = new HashMap<>();map.put(2,1);int i = map.get(1); System.out.println(i);}
}
运行出错,看代码很明显是get到一个不存在map的值,但为什么报的是NullPointerException
呢?
实际上,map.get(1)
得到的是一个null值。Java 会尝试将返回的 null 自动拆箱为 int,这会导致 NullPointerException
,因为 null 不能被转换为 int。
解决方法
- 用
Integer
接收,如Integer i = map.get(1);
- 使用
map.getOrDefault()
, 如map.getOrDefault(1,0)
,尝试get key为1的value值,如果没有,则放回0。