0
我對HashMap JDK實現的理解是,要放入HashMap存儲桶的Entry對象的Key用於在HashMap對象的Entry []表字段中查找一個位置。 如果是這樣的話,爲什麼這個散列碼用作for循環的起點?如果在基於計算的密鑰哈希的預期位置未找到條目,則循環訪問Entry對象數組的基本原理是什麼?集合框架的HashMap.put(Entry k)實現中for循環的目的是什麼?
OpenJDK的這種方法的代碼如下。
public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());
int i = indexFor(hash, table.length);
for (Entry<k , V> e = table[i]; e != null; e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
}
modCount++;
addEntry(hash, key, value, i);
return n
存儲桶是鏈接列表。 – 2014-10-01 15:23:02
http://stackoverflow.com/questions/6493605/how-does-a-hashmap-work-in-java – 2014-10-01 15:45:07