1. 程式人生 > >Map中HashMap和HashTable的區別

Map中HashMap和HashTable的區別

Map是用來儲存鍵值對的資料結構;

1)、在陣列中通過陣列下標對其內容進行索引的;

2)、Map,則是通過物件來進行索引的,用來索 引的物件叫做key(鍵),其對應的物件是value(值)。

3)、Map介面有兩個實現類HashMapHashTable,他 們儲存元素的時候,都是無序的;並且HashMapHashTable都採用了hash法進行索引的。

1、HashMap

   HashMap是根據鍵的HashCode值儲存資料,根據鍵(key)可以直接獲取它的值(value),並且訪問速度很快。

   1)、HashMap裡面存入的鍵值對在取出時沒有固定的順序,是隨機的。

   2)、在Map中插入、刪除和定位元素,最好所選擇HashMap

2、HashTable

   HashTable中,是同步的,同步指的是:在一個時間點只能有一個執行緒可以修改hash表,任何執行緒在執行HashTable的更新操作前都需要獲取物件鎖,其他執行緒則等待鎖的釋放。

3、HashMapHashTable的區別

(1)HashTable是同步的,HashMap是不能同步的;

(2)HashTable不允許null值(鍵值對keyvalue都 不可以),HashMap則允許null值(鍵值對可以和 value都是可以的)。

(3)HashTable類中contain

()方法,和containValue() 功能一樣。

(4)HashTable使用的是Enumeration(列舉),HashMap 使用的是Iterator(迭代器)。

(5)、雜湊值的使用是不同的,HashTable直接使用物件 的hashCode,而HashMap則會重新計算hash值。

(6)HashTable11old*2+1)和HashMap16必須 是2的指數)兩者的hash陣列預設值大小不同。