hashtable为什么不能存null
为什么不能存null,是由于作者在设计hashtaable的时候是如下设计的
This class implements a hash table, which maps keys to values. Any non-<code>null</code> object can be used as a key or as a value. <p>
To successfully store and retrieve objects from a hashtable, the objects used as keys must implement the <code>hashCode</code> method and the <code>equals</code> method. <p>
我们翻译过来,“
这个类实现了一个散列表,它将键映射到值。任何非空对象都可以用作键或值。
要成功地从散列表中存储和检索对象,用作键的对象必须实现 hashCode 方法和 equals 方法”。
但是null不是对象,不能调用hashCode()和equals(),显然作者忽略了null这个特殊的存在。因此作者为了弥补这个问题,继而设计出了HashMap,它专门设计为将空值作为键处理并将其作为特殊情况处理。
最后,hashtable已经过时,不应该再使用。