一. 对 null key 和 null value 的支持不同
HashMap
null 可以作为键,但只能有一个key是null,可以有多个value为 null。Hashtable
既不支持 null key,也不支持 null value
二. 继承的父类不同
HashMap
继承自 AbstractMapHashtable
继承自 Dictionary
三. 线程安全
HashMap
是非线程安全的Hashtable
是线程安全的
四. 补充
-
在 Hashtable 的类注释中可以看到这样一段:
-
从类注释中翻译,我们可以得出以下几点:
(1) Hashtable 是保留类不建议使用
(2) 在单线程的环境下,推荐使用
HashMap
代替(3) 而在多线程的环境下,则推荐使用
ConcurrentHashMap
代替