hashMap 和 hashTable 的區別

2021-07-05 13:02:38 字數 1468 閱讀 1169

1. hashmap

1)  hashmap的資料結構 

hashmap是乙個陣列和鍊錶的結合體(在資料結構稱「鍊錶雜湊「),如下圖示:

當我們往hashmap中put元素的時候,先根據key的hash值得到這個元素在陣列中的位置(即下標),然後就可以把這個元素放到對應的位置中了。如果這個元素所在的位子上已經存放有其他元素了,那麼在同乙個位子上的元素將以鍊錶的形式存放,新加入的放在鏈頭,最先加入的放在鏈尾。

2)使用

map map = new hashmap();

map.put("rajib sarma","100");

map.put("rajib sarma","200");//

the value "100" is replaced by "200".

map.put("sazid ahmed","200");

iterator iter = map.entryset().iterator();

while (iter.hasnext())

2. hashtable和hashmap區別

第一,繼承不同。

public

class hashtable extends dictionary implements map

public

class hashmap extends abstractmap implements map

第二hashtable 中的方法是同步的,而hashmap中的方法在預設情況下是非同步的。在多執行緒併發的環境下,可以直接使用hashtable,但是要使用hashmap的話就要自己增加同步處理了。

第三hashtable中,key和value都不允許出現null值。

在hashmap中,null可以作為鍵,這樣的鍵只有乙個;可以有乙個或多個鍵所對應的值為null。當get()方法返回null值時,即可以表示 hashmap中沒有該鍵,也可以表示該鍵所對應的值為null。因此,在hashmap中不能由get()方法來判斷hashmap中是否存在某個鍵, 而應該用containskey()方法來判斷。

第四,兩個遍歷方式的內部實現上不同。

hashtable、hashmap都使用了 iterator。而由於歷史原因,hashtable還使用了enumeration的方式 。

第五雜湊值的使用不同,hashtable直接使用物件的hashcode。而hashmap重新計算hash值。

第六hashtable和hashmap它們兩個內部實現方式的陣列的初始大小和擴容的方式。hashtable中hash陣列預設大小是11,增加的方式是 old*2+1。hashmap中hash陣列的預設大小是16,而且一定是2的指數

HashMap的工作原理和hashtable區別

1.hashmap的工作原理?hashmap底層是陣列 鍊錶 以陣列儲存元素,如有hash相同的元素,在陣列結構中,建立鍊錶結構,再把hash相同的元素放到鍊錶的下乙個節點 基於hashing 雜湊法 雜湊法 是一種將字元組成的字串轉換為固定長度的數值或索引值的方法 的原理。通過put get 方法...

HashMap和LinkedHashMap的區別

hashmap,linkedhashmap,treemap都屬於map map 主要用於儲存鍵 key 值 value 對,根據鍵得到值,因此鍵不允許鍵重複,但允許值重複。hashmap 是乙個最常用的map,它根據鍵的hashcode 值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度。ha...

HashMap和LinkedHashMap的區別

hashmap,linkedhashmap,treemap都屬於map map 主要用於儲存鍵 key 值 value 對,根據鍵得到值,因此鍵不允許鍵重複,但允許值重複。hashmap 是乙個最常用的map,它根據鍵的hashcode 值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度。ha...