HashMap和Hashtable的比較?

雜湊表由陣列+連結串列組成,一個長度為16的陣列中,每個元素儲存的是一個連結串列的頭結點。而HashMap和Hashtable就是雜湊表結構。

工具/原料

HashMap和HashTable

陣列的儲存空間是連續的,佔用記憶體嚴重,故空間複雜度很大,但是查詢時間複雜度較小。陣列的特點:定址容易,插入和刪除困難。

連結串列的儲存空間是離散的,佔用記憶體比較寬鬆,故空間複雜度較小,但查詢時間複雜度較大。連結串列的特點:定址困難,插入和刪除容易。

方法/步驟

繼承類不同:

A.HashMap繼承AbstractMap

B.Hashtable繼承Dictionary

執行效率不同:

A.HashMap是非執行緒安全的,是Hashtable的輕量級實現,效率較高

B.Hashtable是執行緒安全的,效率較低

put方法對key和value的要求不同

A.HashMap允許Entry的key或value為null

B.Hashtable不允許Entry的key或value為null,否則出現NullPointerException

有無contains方法

A.HashMap沒有contains方法

B.Hashtable有contains方法

注意事項

注意:Hashtale是Syncchronize的,而HashMap是Asyncchronize的,當多個執行緒訪問Hashtable時,Hashtable不需要自己為它的方法實現同步;而當多個執行緒訪問HashMap時,需要通過Collections.synchronizedMap來同步HashMap。

相關問題答案