Dưới đây là mã nguồn của phương thức HashMap
Java 7 (phương pháp) của Java 7. Như bạn có thể thấy, trong phương thức get, khi so sánh khóa, nó so sánh cả giá trị băm và khóa của khóa để xác định xem mục nhập trong danh sách liên kết có phải là khóa tìm kiếm hay không. Tuy nhiên, tôi giả sử rằng nếu hai khóa giống nhau, tất nhiên chúng sẽ có cùng mã băm và nếu hai khóa khác nhau, việc so sánh các giá trị của khóa là đủ để phân biệt chúng. Vậy tại sao mã nguồn Java HashMap
quan tâm đến sự bình đẳng của mã băm của khóa?so sánh khóa hashmap, tại sao so sánh cả mã băm và khóa của khóa cả
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;
}