Map中HashMap和HashTable的區別
Map是用來儲存鍵值對的資料結構;
(1)、在陣列中通過陣列下標對其內容進行索引的;
(2)、在Map中,則是通過物件來進行索引的,用來索 引的物件叫做key(鍵),其對應的物件是value(值)。
(3)、Map介面有兩個實現類HashMap和HashTable,他 們儲存元素的時候,都是無序的;並且HashMap和 HashTable都採用了hash法進行索引的。
1、HashMap
HashMap是根據鍵的HashCode值儲存資料,根據鍵(key)可以直接獲取它的值(value),並且訪問速度很快。
(1)、HashMap裡面存入的鍵值對在取出時沒有固定的順序,是隨機的。
(2)、在Map中插入、刪除和定位元素,最好所選擇HashMap。
2、HashTable
在HashTable中,是同步的,同步指的是:在一個時間點只能有一個執行緒可以修改hash表,任何執行緒在執行HashTable的更新操作前都需要獲取物件鎖,其他執行緒則等待鎖的釋放。
3、HashMap和HashTable的區別
(1)、HashTable是同步的,HashMap是不能同步的;
(2)、HashTable不允許null值(鍵值對key和value都 不可以),HashMap則允許null值(鍵值對可以和 value都是可以的)。
(3)、HashTable類中contain
()方法,和containValue() 功能一樣。(4)、HashTable使用的是Enumeration(列舉),HashMap 使用的是Iterator(迭代器)。
(5)、雜湊值的使用是不同的,HashTable直接使用物件 的hashCode,而HashMap則會重新計算hash值。
(6)、HashTable(11,old*2+1)和HashMap(16必須 是2的指數)兩者的hash陣列預設值大小不同。