Middle+
60
Je doet een get op een sleutel in een HashMap, maar het element wordt niet gevonden, terwijl je zeker weet dat deze paar is ingevoerd. Hoe kan dit gebeuren?
Bedrijven waar gevraagd werd
луция
Antwoord van 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) {
// ...
}
}
Из-за этого поиск по ключу не сработает.