詳述HashSet類add方法(二)

2021-10-05 07:16:54 字數 1567 閱讀 2518

此時我們來分析當新增重複元素進hashset集合時的情況

原始碼如下:

add方法:

public

boolean

add(e e)

put方法:

public v put

(k key, v value)

hash()方法:

static

final

inthash

(object key)

putval()方法:

final v putval

(int hash, k key, v value,

boolean onlyifabsent,

boolean evict)

if(e.hash == hash &&

((k = e.key)

== key ||

(key != null && key.

equals

(k))))

break

; p = e;}}

if(e != null)

}++modcount;if(

++size > threshold)

resize()

;afternodeinsertion

(evict)

;return null;

}

當我們像集合中新增元素時候,首先會判斷集合中是否存在重複元素,如果存在重複元素,那麼會返回第乙個jim到add方法,此時顯然不為空,那麼

return map.

put(e, present)

==null;

此時顯然為false,儲存失敗

需要我們注意的是,hash()方法主要用來判斷元素內容是否相等

演示如下:

string str1 =

"111"

; string str2 =

newstring

("111");

system.out.

println

(hash

(str1));

//48657

system.out.

println

(hash

(str2));

//48657

student stu1 =

newstudent()

; student stu2 =

newstudent()

; system.out.

println

(hash

(stu1));

//1 system.out.

println

(hash

(stu2));

//1 (重寫了student類中的hash方法,返回值為1)

詳述HashSet類add方法(一)

我們知道,add方法可以用來向集合中新增元素,對於hashset集合來說,不允許儲存重複的元素,當我們儲存元素的時候,集合會對新增進來的元素進行判斷是否重複,首先我們對新加元素進行分析 add方法原始碼 jdk 11.0.4 public boolean add e e 此時我們發現,返回值是乙個布...

詳述HashSet類add方法(一)

詳述hashset類add方法 一 分析第一次新增資料的步驟 public class test2 1.呼叫hashset add 方法,原始碼如下 public boolean add e e 2.返回map.put 值,key為e,value值為present常量,方法原始碼如下 public ...

詳述HashSet類add方法(三)

詳述hashset類add方法 三 public class test1 學生類 public class student 1.當第二次新增學生物件時,首先呼叫add 方法 public boolean add e e 2.呼叫map.put 方法,present是乙個常量,存第乙個和第二個值的時候...