HashMap.containsKey()
метод определяет, существует ли ключ hashCode()
, а не путем сравнения на равенство.Если хеш-код существует, он извлечет запись, чтобы увидеть, равно ли равенство ссылки ИЛИ equals()
ключа.
Это реализовано в методе HashMap.getEntry()
:
/**
* Returns the entry associated with the specified key in the
* HashMap. Returns null if the HashMap contains no mapping
* for the key.
*/
final Entry<K,V> getEntry(Object key) {
int hash = (key == null) ? 0 : 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 != null && key.equals(k))))
return e;
}
return null;
}