java - 为什么 Hashtable 不允许空键或空值?

标签 java hashmap hashtable

如 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/

相关文章:

java - Gui JCombobox 文本变得模糊

java - 不确定我正在使用继承/多态性问题吗?

java - 从 NavigableMap 中提取列表

c# - C# 中字符串字典的最佳性能

algorithm - 麻省理工学院讲座错了吗?散列中的开放寻址分析

c - 程序适用于字符串文字,但不适用于字符串数组

java - Java Fencepost/While 循环条件测试简介

java - 在开始路由之前交叉检查camel ftp/sftp身份验证

java - 用 Java 填充 HashMap

java - 从 HashMap<String, String> 中为字符串的每个字符检索值返回 NULL