目錄
一、hashset add方法
二、hashmap put方法
hash(key)
三、hashmap putval方法
resize()
以下面的**為例(新增第乙個值):
實則為呼叫hashmap中的put方法
static final int hash(object key)
注釋:第一次新增值,table為null,所以tab也為null,第乙個if語句短路直接成立,從而成功為n賦值,此時需要解釋resize()的作用,而第二個if中tab[i=(r-1) & hash)]為在此儲存的位置,因為為第乙個值,所以一定是null,直接執行tab[i]--在此位置新增值。
此**冗雜,不需要完全看懂,只需要知道其執行的最終目的,找到return的地方,發現是用來返回newtab,因此這行**的作用是為重新定義table為newtab,並且返回陣列長度為16並將其賦給n
final
node
resize()
elseif
((newcap
= oldcap
<< 1) <maximum_capacity
&& oldcap
>=default_initial_capacity
) newthr
= oldthr
<< 1;
// double threshold
}elseif
(oldthr
> 0)
// initial capacity was placed in threshold
newcap
= oldthr
;else
if
(newthr
== 0)
threshold
= newthr
; @suppresswarnings
() node
newtab
= (node)new
node[
newcap
]; table
= newtab
;if
(oldtab
!=null
)else
}while((e
= next
) !=null
);if
(lotail
!=null
)if
(hitail
!=null
) }
} }}return
newtab; }
詳述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 ...