当密钥不存在时,Hashtable返回null或抛出异常?

时间:2014-12-23 15:08:24

标签: java dictionary

Java HashMap.get() returns null when I create a new instance of an object as a key

对于上面的链接,似乎HashMap在地图中不存在键时返回null。但是,当我尝试:

Map<Integer,Integer> hs = new HashMap<Integer,Integer>();
int value = hs.get(1);
System.out.println(value);

它抛出:

Exception in thread "main" java.lang.NullPointerException

问题是什么?如何让Map返回null而不是在这种情况下抛出异常?

1 个答案:

答案 0 :(得分:10)

int是一个原始的,并不支持null值。你在那里的代码可以这样理解:

Integer temp = hs.get(1);
int value = temp.intValue();
            ^null^

由于此Integer temp变量为null,因此在对int执行自动取消装箱时,您有一个NullPointerException

要避免此问题,请使用Integer变量,而不是int

Map<Integer,Integer> hs = new HashMap<Integer,Integer>();
Integer value = hs.get(1);
System.out.println(value);