?本次分析代碼為JDK1.8中HashTable代碼。
??HashTable不允許null作為key和value。
??HashTable中的方法為同步的,所以HashTable是線程安全的。
Entry類(lèi)
介紹
Entry是HashTable內(nèi)的一個(gè)靜態(tài)內(nèi)部類(lèi),實(shí)現(xiàn)了Map.Entry接口。table的類(lèi)型就是Entry。
基本參數(shù)
hash:存這個(gè)Entry的hash值
key:存key值
value:存value的值
next:通過(guò)鏈表連接下一個(gè)Entry
final int hash;final K key; V value; Entry<K,V> next;
構(gòu)造函數(shù)
用來(lái)新建Entry,需要四個(gè)參數(shù)。
protected Entry(int hash, K key, V value, Entry<K,V> next) { this.hash = hash; this.key = key; this.value = value; this.next = next; }
方法
getKey方法:返回key值
getValue方法:返回value的值
setValue方法:修改value值
重寫(xiě)了equals和hashCode方法:hashCode方法通過(guò)計(jì)算該Entry的hash值與value的hash值進(jìn)行異或運(yùn)算;equals方法通過(guò)判斷key和value是否同時(shí)相同來(lái)判斷。
網(wǎng)友評(píng)論