Middle+
65
Fai un get per chiave in una HashMap, ma l'elemento non viene trovato, anche se sai con certezza che questa coppia è stata inserita. Come può succedere?
Le aziende dove è stato chiesto
луция
Risposta dell'AI
sobes.tech AI
Такое может произойти, если переопределены методы hashCode() и equals() в ключах, но сделано это неправильно. Например, если hashCode() возвращает разные значения для одного и того же объекта при разных вызовах, или equals() не соответствует контракту, то HashMap не сможет найти элемент.
Другие причины:
- Ключ был изменён после вставки (мутабельный объект в качестве ключа).
- Используется другой объект с теми же данными, но без корректного переопределения
equalsиhashCode.
Пример неправильного ключа:
class Key {
int id;
@Override
public int hashCode() {
return new Random().nextInt(); // Неправильно!
}
@Override
public boolean equals(Object o) {
// ...
}
}
Из-за этого поиск по ключу не сработает.