1. Hashtable继承自陈旧的Dictionary类;而HashMap继承自AbstractMap类。
2. Hashtable的方法使用了Synchronize修饰,Hashtable是线程安全的;而HashMap不是,所以在多线程环境下,需要使用Collections.synchronizedMap(Map)为HashMap提供外同步。(由于非线程安全,所以HashMap效率上可能高于Hashtable)
3. Hashtable的键或值都不能为null,如果为null会抛出NullPointerException;而HashMap的键或值可以为null。
4. Hashtable使用Enumeration,HashMap使用Iterator。
5. Hashtable使用hashCode()作为哈希值,而HashMap重新计算哈希值。
6. Hashtable中默认哈希数组大小是11,增加方式为2*old+1,HashMap默认大小是16,且数组大小一定是2的指数。