壹、繼承父類不同
Hashtable繼承自Dictionary類,而HashMap繼承自AbstractMap類;但二者都實現了Map接口。
二、線程的安全性
1、HashTable是同步(方法中使用了Synchronize)的;而HashMap是未同步(方法中缺省Synchronize)的。
2、Hashtable線程安全,因為它每個方法中都加入了Synchronize,在多線程並發的環境下,可以直接使用Hashtable,不需自己在加同步;
HashMap線程不安全,因為HashMap底層是壹個Entry數組,當發生hashmap沖突的時候,hashmap是采用鏈表的方式來解決的,在對應的數組位置存放鏈表的頭結點。對鏈表而言,新加入的節點會從頭結點加入。
三、是否有contains方法
1、HashTable有壹個contains(Object value)方法,功能和containsValue方法(Object value)功能壹樣。
2、HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey。
四、可否允許有null值
key、value都是對象,但是不能擁有重復key值,value值可以重復出現。
1、Hashtable中,key和value都不允許出現null值。
2、HashMap允許null值(key和value都可以),因為在HashMap中null可以作為健,而它對應的值可以有多個null。
五、遍歷方式內部實現不同
1.HashTable使用Enumeration,HashMap使用Iterator。