Sobes.tech
Middle+
61

HashMap-də açar ilə get edirsiniz, amma element tapılmır, halbuki siz dəqiq bilirsiniz ki, bu cütlük daxil edilib. Bu necə baş verə bilər?

Şirkətlər soruşuldu
луция

AI-dan cavab

sobes.tech Süni İntellekt

Такое может произойти, если переопределены методы 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) {
        // ...
    }
}

Из-за этого поиск по ключу не сработает.