hashSet的實現原理去重

2022-06-28 16:15:13 字數 1168 閱讀 8500

/*

集合 的體系:

------------| collection 單例集合的根介面

----------------| list 如果是實現了list介面的集合類,具備的特點: 有序,可重複。

-------------------| arraylist arraylist 底層是維護了乙個object陣列實現的。 特點: 查詢速度快,增刪慢。

-------------------| linkedlist linkedlist 底層是使用了鍊錶資料結構實現的, 特點: 查詢速度慢,增刪快。

-------------------| vector(了解即可) 底層也是維護了乙個object的陣列實現的,實現與arraylist是一樣的,但是vector是執行緒安全的,操作效率低。

----------------| set 如果是實現了set介面的集合類,具備的特點: 無序,不可重複。

-------------------| hashset 底層是使用了雜湊表來支援的,特點: 訪問速度快.

hashset的實現原理:

往haset新增元素的時候,hashset會先呼叫元素的hashcode方法得到元素的雜湊值 ,

然後通過元素 的雜湊值經過移位等運算,就可以算出該元素在雜湊表中 的儲存位置。

情況1: 如果算出元素儲存的位置目前沒有任何元素儲存,那麼該元素可以直接儲存到該位置上。

情況2: 如果算出該元素的儲存位置目前已經存在有其他的元素了,那麼會呼叫該元素的equals方法與該位置的元素再比較一次

,如果equals返回的是true,那麼該元素與這個位置上的元素就視為重複元素,不允許新增,如果equals方法返回的是false,那麼該元素執行 新增。

-------------------| treeset

*/class

person

@override

public

string tostring() ";

}@override

public

inthashcode()

@override

public

boolean

equals(object obj)

}public

class

demo2

}

HashSet的實現原理

hashset實現set介面,由雜湊表 實際上是乙個hashmap例項 支援。它不保證set 的迭代順序 特別是它不保證該順序恆久不變。此類允許使用null元素。hashset中不允許有重複元素,這是因為hashset是基於hashmap實現的,hashset中的元素都存放在hashmap的key上...

HashSet的實現原理

set的實現類的集合物件中不能夠有重複元素,hashset也一樣他是使用了一種標識來確定元素的不重複,hashset用一種演算法來保證hashset中的元素是不重複的,hashset採用雜湊演算法,底層用陣列儲存資料。預設初始化容量16,載入因子0.75 object類中的hashcode 的方法是...

HashSet的實現原理

hashset實際上是乙個hashmap例項,都是乙個存放鍊錶的陣列。它不保證儲存元素的迭代順序 此類允許使用null元素。hashset中不允許有重複元素,這是因為hashset是基於hashmap實現的,hashset中的元素都存放在hashmap的key上面,而value中的值都是統一的乙個固...