題001_HashMap和Hashtable的區別

(先說相同點,再說不同點)

 

HashMapHashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap允許空(null)鍵值(key,由於非線程安全,在只有一個線程訪問的情況下,效率要高於Hashtable。 

HashMap允許將null作爲一個entrykey或者value,而Hashtable不允許。 

 

HashMapHashtablecontains方法去掉了,改成containsvaluecontainsKey。因爲contains方法容易讓人引起誤解。 

 

Hashtable繼承自Dictionary類,而HashMapJava1.2引進的Map interface的一個實現。 

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己爲它的方法實現同步,而HashMap 就必須爲之提供外同步。 

 

HashtableHashMap採用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。

 

 

HashMapHashTable主要從三方面來說。 

 

 

.歷史原因:Hashtable是基於陳舊的Dictionary類的,HashMapJava 1.2引進的Map接口的一個實現 
.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的 
.值:只有HashMap可以讓你將空值作爲一個表的條目的keyvalue 

---------------------------------------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章