如 JDK 文档中所述,Hashtable 不允许空键或空值。 HashMap 允许一个空键和任意数量的空值。这是为什么呢?
最佳答案
Hashtable 是较旧的类,通常不鼓励使用它。也许他们看到了对空键的需求,更重要的是 - 空值,并将其添加到 HashMap 实现中。
HashMap 较新,具有更高级的功能,基本上只是对 Hashtable 功能的改进。 HashMap 在创建时,专门设计用于将 null 值作为键处理,并将它们作为特殊情况处理。
编辑
来自哈希表
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
无法计算哈希以将其用作键。
关于java - 为什么 Hashtable 不允许空键或空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11981852/