Sobes.tech
Middle+
49

HashMap'te anahtar ile get yapıyorsunuz, ancak öğe bulunmuyor, oysa bu çifti kesinlikle eklediğinizi biliyorsunuz. Bu nasıl olabilir?

Sorulan şirketler
луция

AI'dan gelen yanıt

sobes.tech yapay zeka

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

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