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, он должен удовлетворять следующим требованиям:
-
Определён метод хеширования (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.