Sobes.tech
Junior

Aan welke eisen moeten objecten van de klasse voldoen om als sleutels in een HashMap te kunnen worden gebruikt?

sobes.tech AI

Antwoord van AI

Чтобы объект класса можно было использовать в качестве ключа в 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.