簡體   English   中英

有人可以解釋一下hashmap get(key)方法的代碼嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM