詳述HashSet類add方法(三)

2021-10-05 15:27:34 字數 935 閱讀 6053

詳述hashset類add方法(三)

public class test1 

}

學生類:

public class student 

}

1.當第二次新增學生物件時,首先呼叫add()方法

public boolean add(e e)
2.呼叫map.put()方法,present是乙個常量,存第乙個和第二個值的時候由於hashcode不相同,所以第二次存的物件與第一次存的物件hash(key)結果不一樣的

public v put(k key, v value)
3.呼叫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;}}

v oldvalue = e.value;

if (!onlyifabsent || oldvalue == null)// onlyifabsent本來就為false,所以!onlyifabsent true

e.value = value;

afternodeaccess(e);

return oldvalue; }}

++modcount;

if (++size > threshold)

resize();

afternodeinsertion(evict);

return null;

詳述HashSet類add方法(一)

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

詳述HashSet類add方法(二)

此時我們來分析當新增重複元素進hashset集合時的情況 原始碼如下 add方法 public boolean add e e put方法 public v put k key,v value hash 方法 static final inthash object key putval 方法 fin...

詳述HashSet類add方法(一)

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