hashMap與hashTable

哈希表由數組+鏈表組成,一個長度爲16的數組中,每一個元素存儲的是一個鏈表的頭結點。而HashMap和Hashtable就是哈希表結構。數組

HashMap和HashTable
數組的存儲空間是連續的,佔用內存嚴重,故空間複雜度很大,可是查找時間複雜度較小。數組的特色:尋址容易,插入和刪除困難。
鏈表的存儲空間是離散的,佔用內存比較寬鬆,故空間複雜度較小,但查找時間複雜度較大。鏈表的特色:尋址困難,插入和刪除容易安全

1 繼承類不一樣:
A.HashMap繼承AbstractMap
B.Hashtable繼承Dictionary線程

2 執行效率不一樣:
A.HashMap是非線程安全的,是Hashtable的輕量級實現,效率較高
B.Hashtable是線程安全的,效率較低繼承

3 put方法對key和value的要求不一樣
A.HashMap容許Entry的key或value爲null
B.Hashtable不容許Entry的key或value爲null,不然出現NullPointerException 內存

4有無contains方法
A.HashMap沒有contains方法
B.Hashtable有contains方法同步

注意:Hashtale是Syncchronize的,而HashMap是Asyncchronize的,當多個線程訪問Hashtable時,Hashtable不須要本身爲它的方法實現同步;而當多個線程訪問HashMap時,須要經過Collections.synchronizedMap來同步HashMapio

相關文章
相關標籤/搜索