Hashtable和HashMap的區(qū)別

Hashtable和HashMap類的作用一樣,都是用來存儲kv對。實際上,它們擁有相同的接口。Hashtable和HashMap的區(qū)別如下:

  1. Hashtable的方法是同步的,HashMap的方法不是同步的。這是兩者最主要的區(qū)別。

這就意味著Hashtable是線程安全的,HashMap不是線程安全的。HashMap效率較高,Hashtable效率較低。
如果對同步性或與遺留代碼的兼容性沒有任何要求,建議使用HashMap。
查看Hashtable的源代碼就可以發(fā)現(xiàn),除構(gòu)造函數(shù)外,Hashtable的所有 public 方法聲明中都有 synchronized關(guān)鍵字,而HashMap的源碼中則沒有。

  1. Hashtable不允許null值,HashMap允許null值(key和value都允許)

  2. 父類不同:Hashtable的父類是Dictionary,HashMap的父類是AbstractMap

  3. Hashtable中hash數(shù)組默認(rèn)大小是11,增加的方式是 old*2+1。HashMap中hash數(shù)組的默認(rèn)大小是16,而且一定是2的指數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容