詳述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 ...