Sobes.tech
Junior

Quais os requisitos que os objetos da classe devem atender para poderem ser usados como chaves em um HashMap?

sobes.tech IA

Resposta da IA

Чтобы объект класса можно было использовать в качестве ключа в HashMap, он должен удовлетворять следующим требованиям:

  1. Определён метод хеширования (hashCode в Java) — объект должен возвращать корректный и стабильный хеш-код, который не меняется во время использования в HashMap.

  2. Определён метод сравнения на равенство (equals в Java) — объекты, считающиеся равными, должны иметь одинаковый хеш-код.

  3. Иммутабельность ключа — значения полей, участвующих в вычислении hashCode и equals, не должны изменяться после помещения объекта в HashMap, иначе это приведёт к потере доступа к элементу.

Пример на Java:

class Person {
    private final String id;

    public Person(String id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        return id.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person other = (Person) obj;
        return id.equals(other.id);
    }
}

Такой объект можно безопасно использовать в качестве ключа в HashMap.