[英]Can someone please explain me the code for the hashmap get(key) method?
在Java的get(Object key)方法中,有一段我無法理解的代碼。
我知道即使兩個對象的哈希碼相同,get(key)方法的工作方式也是如此。
但是下面的代碼我無法理解。
for (Entry<K,V> e = table[indexFor(hash, table.length)];
e != null;
e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
return e.value;
}
有人可以解釋。 謝謝
HashMap
使用哈希桶算法 。 並且Hash存儲桶被安排為HashMap
類稱為table
數組。 因此, for
循環從保存key
的哈希桶的第一個元素開始
Entry<K,V> e = table[indexFor(hash, table.length)
此處的hash
表示該存儲桶的哈希索引
for
循環將一直運行,直到存儲桶中有元素為止( e != null
)
for
循環將像e = e.next
一樣進行迭代,也就是說,移動到存儲桶中的下一個元素,直到找到匹配項
現在,一旦散列桶中發現,該方法應該返回准確的條目,其關鍵傳遞匹配key
。 現在,可以通過匹配 ( ==
)或等於匹配 (k = e.key) == key || key.equals(k)
來完成此匹配。 (k = e.key) == key || key.equals(k)
如果匹配發生,則返回鍵,否則該方法將返回null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.