參考:https://blog.csdn.net/u010297957/article/details/51974340
哈希算法:一類算法箭启。
這類算法接受「任意長度的二進(jìn)制輸入值」,對(duì)輸入值做換算(切碎)蛉迹,最終給出「固定長度的二進(jìn)制輸出值」傅寡。
哈希表:指一種數(shù)據(jù)結(jié)構(gòu),使用哈希算法
根據(jù)設(shè)定的Hash函數(shù) - H(key)H(key) 和處理沖突的方法,將一組關(guān)鍵字映象 到一個(gè)有限的連續(xù)的地址集(區(qū)間)上荐操,并以關(guān)鍵字在地址集中的象 作為記錄在表中的存儲(chǔ)位置大猛,這樣的映射表便稱為Hash表。
HashMap:是Java中用哈希表實(shí)現(xiàn)的一種「Map」淀零。
HashMap是繼承自AbstractMap類挽绩,而HashTable是繼承自Dictionary類。不過它們都實(shí)現(xiàn)了同時(shí)實(shí)現(xiàn)了map驾中、Cloneable(可復(fù)制)唉堪、Serializable(可序列化)這三個(gè)接口
Hashtable是線程安全的,它的每個(gè)方法中都加入了Synchronize方法肩民。
HashMap不是線程安全的唠亚,可以使用線程安全的ConcurrentHashMap。
Hashtable既不支持Null key也不支持Null value持痰。
HashMap中灶搜,null可以作為鍵,這樣的鍵只有一個(gè)工窍;可以有一個(gè)或多個(gè)鍵所對(duì)應(yīng)的值為null割卖。
Hashtable默認(rèn)的初始大小為11,之后每次擴(kuò)充患雏,容量變?yōu)樵瓉淼?n+1鹏溯。
HashMap默認(rèn)的初始化大小為16。之后每次擴(kuò)充淹仑,容量變?yōu)樵瓉淼?倍丙挽。
HashMap效率更好。