小编典典

为什么Hashtable不使用空键?

java

为什么Hashtable不带null钥匙?

另外,为什么HashMap允许null键?

使这两个类的键行为如此不同的目的是什么?


阅读 220

收藏
2020-10-07

共1个答案

小编典典

Hashtable
JavaDoc

To successfully store and retrieve objects from a hashtable, the objects used 
as keys must implement the hashCode method and the equals method.

简而言之,由于null不是对象,因此无法调用.equals().hashCode()对其进行调用,因此Hashtable无法计算哈希值以将其用作键。

HashMap较新,并且具有更高级的功能,基本上只是对Hashtable功能的改进。这样,在HashMap创建时,它专门设计为将null值作为键来处理,并将它们作为特殊情况来处理。

具体来说,null在发出时,像这样处理用作键.get(key)

(key==null ? k==null : key.equals(k))
2020-10-07