java.util.HashMap#put(Object, Object)
의 소스 코드는
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 null;
}
내가 키가 (표에 같은 인덱스를 얻을 수있는 경우라고 생각입니다
]), e.hash == hash
은 항상 true를 반환합니다. 코드 e.hash == hash
은 .put()
방법에 필요합니까?
유일한 설명은 hash()
및 indexFor()
메서드가 작동 한 후에 다른 key.hashCode()가 결과가 같아 지므로 코드가 필요하다는 것입니다.
내 대답은 맞습니까? e.hash == hash
이 필요한 경우 누가 알 수 있습니까?
문제가 무엇인지는 명확하지 않습니다. 좀 더 정교하게 만들 수 있습니까? –
e.hash! = 해시가 발생할 수 있습니까? – pccold