java中map的三個實現


Map接口有三個比較重要的實現類,分別是HashMap、TreeMap和HashTable。

TreeMap是有序的,HashMap和HashTable是無序的。

Hashtable的方法是同步的,HashMap的方法不是同步的。這是兩者最主要的區別。

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

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

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

Hashtable中hash數組默認大小是11,增加的方式是 old*2+1。

HashMap中hash數組的默認大小是16,而且一定是2的指數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM