Hashmap 與hashtable的區別

2021-08-16 05:21:53 字數 641 閱讀 8232

hashmap可以使用null作為key,不過建議還是盡量避免這樣使用。hashmap以null作為key時,總是儲存在table陣列的第乙個節點上。而hashtable則不允許null作為key。

hashmap繼承了abstractmap,hashtable繼承dictionary抽象類,兩者均實現map介面。

hashmap的初始容量為16,hashtable初始容量為11,兩者的填充因子預設都是0.75。

hashmap擴容時是當前容量翻倍即:capacity*2,hashtable擴容時是容量翻倍+1即:capacity*2+1。

hashmap和hashtable的底層實現都是陣列+鍊錶結構實現。

兩者計算hash的方法不同: 

hashtable計算hash是直接使用key的hashcode對table陣列的長度直接進行取模:

int hash = key.hashcode();

intindex = (hash & 0x7fffffff) % tab.length;

static

int hash(int h)

static

int indexfor(int h, int length)

HashMap的工作原理和hashtable區別

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

HashMap基礎與併發

執行緒不安全的hashmap,hashmap在併發執行put操作時會引起死迴圈,是因為多執行緒會導致hashmap的entry鍊錶形成環形資料結構,查詢時會陷入死迴圈。預設初始化大小為16,之後每次擴充,容量變為原來的2倍 預設載入因子為0.75 modcount作用 迭代器每修改一次就 1 has...

基礎才是重中之重 執行緒安全的Hashtable

執行緒安全就是多執行緒訪問時 web網頁多使用者訪問乙個頁面時 採用了加鎖機制,當乙個執行緒訪問該類的某個資料時,進行保護,其他執行緒不能進行訪問直到該執行緒讀取完,其他執行緒才可使用。不會出現資料不一致或者資料汙染。hashtable 表示鍵 值對的集合,這些鍵 值對根據鍵的雜湊 進行組織,它的k...