HashMap和Hashtable的區別

2021-10-06 14:04:06 字數 1885 閱讀 9538

hashmap和hashtable的區別?

hashmap和hashtable都是map介面的實現類,hashtable繼承自dictionary類,而hashmap繼承自abstractmap類,底層實現都是鍊錶+陣列

檢視繼承類結構圖快捷鍵:ctrl+alt+shift+u

hashmap初始容量為16,hashtable初始容量為11,增長因子倒是一致。

// hashmap初始化**

/** * the load factor used when none specified in constructor.

*/static

final

float default_load_factor =

0.75f

;public

hashmap()

// hashtable初始化**

public

hashtable()

hashmap和hashtable前者是執行緒不安全的,後者是執行緒安全的

hashtable保證執行緒安全的方式比較簡單都是,直接使用synchronized。我們可以看看一下這些常用操作,都有在方法上使用synchronized來修飾。

public

synchronized v put

(k key, v value)

public

synchronized v get

(object key)

public

synchronized v remove

(object key)

public

synchronized

boolean

contains

(object value)

hashmap可以有乙個null key,並且可以有的多個null value, hashtable不允許有null key同時也不知道null value

在hashtable當中,我們可以看到put操作的時候,如果value等於null,原始碼當中直接就做了throw new nullpointerexception

public

synchronized v put

(k key, v value)

// makes sure the key is not already in the hashtable.

entry<?,

?> tab[

]= table;

int hash = key.

hashcode()

; …}

如果key等於null key.hashcode();就直接throw new nullpointerexception, value為null有相應判斷。

資料型別 + 操作

時間hashmap put 1w

654ms

hashmap put 10w

968ms

hashmap put 100w

4040ms

hashtable put 1w

42ms

hashtable put 10w

312ms

hashtable put 100w

3625ms

單執行緒的情況下hashmap的執行效率確實要比hashtable要低一些,但是如果是多執行緒環境hashtable的執行效率肯定是會比hashmap低的

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...