HashMap和hashTable的區別

1.Hashtable是線程安全,而HashMap則非線程安全。數組

   Hashtable的實現方法裏面都添加了synchronized關鍵字來確保線程同步,所以相對而言HashMap性能會高一些,咱們平時使用時若無特殊需求建議使用HashMap,在多線程環境下若使用HashMap須要使用Collections.synchronizedMap()方法來獲取一個線程安全的集合,Collections.synchronizedMap()方法幫咱們在操做HashMap時自動添加了synchronized來實現線程同步。安全

2.HashMap可使用null做爲key,而Hashtable則不容許null做爲key。多線程

  HashMap 中不能用get()方法來判斷HashMap 中是否存在某個鍵,而應該用containsKey()方法來判斷。性能

3.HashMap的初始容量爲16,Hashtable初始容量爲11,二者的加載因子默認都是0.75。spa

4.HashMap和Hashtable的底層實現都是數組+鏈表結構實現。線程

5.HashMap擴容時是當前容量翻倍即:capacity*2,Hashtable擴容時是容量翻倍+1即:capacity*2+1。ci

相關文章
相關標籤/搜索