2 回答

TA貢獻1873條經驗 獲得超9個贊
它將對HashMap的條目集執行線性搜索。它將通過查看您的key(by hash)來獲取條目集,然后逐個迭代條目集(您的多個鍵值對/對)并為您檢查正確的鍵。
這是實現
public V get(Object key) {
if (key == null)
return getForNullKey();
int hash = hash(key.hashCode());
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;
}
}
return null;
}

TA貢獻1824條經驗 獲得超8個贊
如果我沒記錯我的老師;
正如您所說,JavasHashMap<K,V>
使用hashcode
(繼承自Object
,最好由您的鍵覆蓋)來定位它應該在底層結構中存儲鍵值對的位置。
如果<K,V>
同一位置存在多個對,則調用get(K k)
將使用您的 keysboolean equals(Object o)
方法來確定您想要哪個(也由 繼承Object
),或者調用put
將使用相同的技術來確定用您的新值替換哪個值一。
然而,它將首先檢查參考。如果您的密鑰和 hasmap 中的一個存儲相同,則不會使用equals
.
添加回答
舉報