1.继承的父类不同,HashTable继承Dictionary,HashMap继承AbstractMap,两者都实现了Map。 2.线程安全性不同。HashTable中的方法是Synchronize的,HashMap在缺省情况下是非Synchronize的。 3.是否提供contains方法。HashTable中提供,功能与ContainsValue类似,HashMap不提供。 4.HashTable不允许key和value为null。HashMap允许有一个key为null,且可以有同一个key对应多个null。因此不能用get()方法判断HashMap中是否存在某个健,而要使用containsKey()判断。 5.HashTable、HashMap都使用了Iterator,而由于历史原因,HashTable还使用了Enumeration的方式。 6.哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。 7.Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。 HashMap中hash数组的默认大小是16,而且一定是2的指数。
转载于:https://my.oschina.net/u/2533093/blog/755154