Sobes.tech
Junior

Quelles sont les exigences auxquelles doivent répondre les objets de la classe pour pouvoir être utilisés comme clés dans un HashMap?

sobes.tech IA

Réponse de l'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.