Назад к вопросам
Junior
10
Каким требованиям должны удовлетворять объекты класса, чтобы можно было их использовать в качестве ключей в HashMap?
Компании, где спрашивали
ИП Ганус Александр Андреевич
Ответ от нейросети
sobes.tech AI
Чтобы объект класса можно было использовать в качестве ключа в HashMap, он должен удовлетворять следующим требованиям:
-
Определён метод хеширования (hashCode в Java) — объект должен возвращать корректный и стабильный хеш-код, который не меняется во время использования в HashMap.
-
Определён метод сравнения на равенство (equals в Java) — объекты, считающиеся равными, должны иметь одинаковый хеш-код.
-
Иммутабельность ключа — значения полей, участвующих в вычислении 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.