1
雖然在看看HashMap類裏面,我碰到這種方法來: -條目<K, V>類使用recordAccess(本)的
/**
* This method is invoked whenever the value in an entry is
* overwritten by an invocation of put(k,v) for a key k that's already
* in the HashMap.
*/
void recordAccess(HashMap<K,V> m) {
}
其實,這種方法是在內部類的Entry<K, V>
我無法做出該評論。這種方法做什麼?
PS:我還可以看到被調用這個方法裏面的HashMap中的putForNullKey()方法
private V putForNullKey(V value) {
for (Entry<K,V> e = table[0]; e != null; e = e.next) {
if (e.key == null) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this); // call
return oldValue;
}
}
modCount++;
addEntry(0, null, value, 0);
return null;
}
更新:我已經更新了第一代碼片段。
請您詳細說明一下嗎?爲什麼從HashMap的方法中調用它? – tmgr
這是一個實現細節。爲了使HashMap和LinkedHashMap之間的代碼相互關聯,基礎Map.Entry定義了這個方法(默認情況下什麼都不做),並且HashMap調用它。在LinkedHashMap中,此方法被覆蓋以維護訪問順序。 –
檢查我的編輯。在HashMap的Entry內部類中,recordAccess()是一個無所事事的方法。 – tmgr