您的位置:首頁>正文

HashMap知識點小結

a) HashMap實際上是一個“鏈表散列”的資料結構, 即陣列和鏈表的結合體。 HashMap的底層結構是一個陣列, 陣列中的每一項是一條鏈表。

b) HashMap的實例有倆個參數影響其性能: “初始容量” 和 裝填因數。

c) HashMap實現不同步, 執行緒不安全。 HashTable執行緒安全

d) HashMap中的key-value都是存儲在Entry中的。

e) HashMap可以存null鍵和null值, 不保證元素的順序恒久不變, 它的底層使用的是陣列和鏈表, 通過hashCode()方法和equals方法保證鍵的唯一性

f) 解決衝突主要有三種方法:定址法, 拉鍊法, 再散列法。 HashMap是採用拉鍊法解決雜湊衝突的。

注: 鏈表法是將相同hash值的物件組成一個鏈表放在hash值對應的槽位;

用開放定址法解決衝突的做法是:當衝突發生時,

使用某種探查(亦稱探測)技術在散列表中形成一個探查(測)序列。 沿此序列逐個單元地查找, 直到找到給定 的關鍵字, 或者碰到一個開放的位址(即該位址單元為空)為止(若要插入, 在探查到開放的位址, 則可將待插入的新結點存人該位址單元)。

拉鍊法解決衝突的做法是: 將所有關鍵字為同義詞的結點連結在同一個單鏈表中 。 若選定的散列表長度為m, 則可將散列表定義為一個由m個頭指標組成的指標數 組T[0..m-1]。 凡是散列地址為i的結點, 均插入到以T[i]為頭指針的單鏈表中。 T中各分量的初值均應為空指針。 在拉鍊法中, 裝填因數α可以大於1, 但一般均取α≤1。 拉鍊法適合未規定元素的大小。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示