5
자바 7의 HashMap
구현 소스 코드 (get()
메쏘드)는 다음과 같다. 보다시피 get 메소드에서 키를 비교할 때 키는 'hashcodes와 keys'값을 비교하여 연결 목록의 항목이 검색중인 키인지 확인합니다. 그러나 두 개의 키가 같은 경우에는 물론 동일한 해시 코드를 가지며 두 개의 키가 다른 경우 키 값을 비교하면 키를 구분하는 데 충분합니다. 그렇다면 Java HashMap
소스 코드가 키의 해시 코드를 동일하게 취급하는 이유는 무엇입니까?해시 맵 키의 비교, 왜 키의 해시 코드와 키의 값을 비교할 것인가?
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;
}