Ответ
Метод equals() в HashMap используется для сравнения ключей при поиске, вставке и удалении элементов. Если хеш-коды ключей совпадают (определяются hashCode()), equals() проверяет, действительно ли ключи одинаковые. Без корректной реализации equals() возможны коллизии и некорректное поведение.
Пример:
class Key {
int id;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Key key = (Key) o;
return id == key.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
Если equals() не переопределён, сравнение будет по ссылке (==), и разные объекты с одинаковыми полями не будут считаться равными.