hashSet保證不重複的原理

2021-08-09 01:22:14 字數 637 閱讀 3616

總的來說,在向hashset中add()元素時,判斷元素是否存在的依據,不僅僅是hash碼值就能夠確定的,同時還要結合equles方法。

hashset 類中的add()方法:

public

boolean

add(e e)

put()方法:

public v put(k key, v value) 

}modcount++;

addentry(hash, key, value, i);

return

null;

}

可以看到for迴圈中,遍歷table中的元素,

1,如果hash碼值不相同,說明是乙個新元素,存;

如果沒有元素和傳入物件(也就是add的元素)的hash值相等,那麼就認為這個元素在table中不存在,將其新增進table;

2(1),如果hash碼值相同,且equles判斷相等,說明元素已經存在,不存;

2(2),如果hash碼值相同,且equles判斷不相等,說明元素不存在,存;

如果有元素和傳入物件的hash值相等,那麼,繼續進行equles()判斷,如果仍然相等,那麼就認為傳入元素已經存在,不再新增,結束,否則仍然新增;

HashSet 如何保證元素不重複 hash碼

hashset 不重複主要add 方法實現,使用 add 方法找到是否存在元素,存在就不新增,不存在就新增。hashset 主要是基於hashmap 實現的,hashmap 的key就是 hashset 的元素,hashset 基於hash 函式實現元素不重複。首先看 add 方法 public b...

HashSet如何保證元素不重複 面試必問

目錄 hashset 實現了 set 介面,由雜湊表 實際是 hashmap 提供支援。hashset 不保證集合的迭代順序,但允許插入 null 值。也就是說 hashset 不能保證元素插入順序和迭代順序相同。hashset 具備去重的特性,也就是說它可以將集合中的重複元素自動過濾掉,保證儲存在...

Set 怎麼保證不重複

因為map中的key是不允許重複的,所以set中的元素不能重複。hashmap的往裡放元素的原始碼!public v put k key,v value modcount addentry hash,key,value,i return null 分步驟判斷新增的key值 1 取到新新增key值得h...