HashSet資料儲存方式詳解

2022-10-09 13:00:13 字數 659 閱讀 4413

***hashset資料儲存方式

下圖為乙個hashset陣列的結構和三個元素,演示儲存的過程

首先存入字串「abc」;通過hashcode方法發現陣列裡沒有96354這個雜湊值,將這個雜湊值存入陣列,然後將元素"abc"以鍊錶的方式連線在對應的雜湊值陣列下

然後重複操作同樣存入元素"重地";

最後,存入元素「通話」,在呼叫方法hashcode返回雜湊值的時候,發現陣列中已經存在117935這個雜湊值,要呼叫equals方法比較元素「重地」和「通話」,若返回false,存入「通話」,若返回ture,放棄儲存。很明顯,「通話」.equals("重地")返回false,因為雜湊值一樣所以「通話」以鍊錶的形式掛在「重地」下面,形成鍊錶

hashset補充:為什麼重寫hashcode方法中用31?

HashSet的儲存原理

hashset的底層用雜湊雜湊表來儲存物件 預設長度為16的陣列 假如 set set new hashset set.add obj 內部儲存過程為 定義h obj.hashcode,得到obj物件的雜湊碼h,再對h進行hash雜湊運算,對陣列長度進行求餘,假如長度為16,則返回乙個0 15之間的...

HashSet的儲存方式以及記憶體洩露的原因

在單鏈表集合 框架中,有兩大體系,乙個是set,乙個是list,簡單來說乙個是線性的乙個是非線性的 arraylist 集合的公升級版 順序表 從上面可以看到我們初始化乙個arraylist物件就會包裝乙個長度為10的object的陣列 linkedlist 鏈式表 這上面我們可以看出來這個是通過內...

Java知識 HashSet詳解

它是由hashmap實現的,不保證元素的順序,而且hashset允許使用 null 元素。如果想要在多執行緒中使用hashset可以使用 collections.synchronizedset 方法來 包裝 set set s collections.synchronizedset new hash...