雜湊表由陣列+連結串列組成,一個長度為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。