Переопределение метода equals необходимо, если вы хотите проверить эквивалентность в стандартных классах библиотеки (например, обеспечить наличие уникальных элементов в java.util.Set или использование объектов в качестве ключей в объектах java.util.Map).
Обратите внимание: если вы переопределяете equals, убедитесь, что вы выполняете контракт API, как описано в документации. Например, убедитесь, что вы также переопределяете Object.hashCode :
Если два объекта равны согласно
метод equals (Object), затем
вызов метода hashCode для каждого из
два объекта должны производить одинаково
целочисленный результат.
РЕДАКТИРОВАТЬ: Я не опубликовал это как полный ответ на эту тему, поэтому я повторю утверждение Фредрика Калсета о том, что переопределение равно лучше всего подходит для неизменных объектов . Чтобы процитировать API для Карта :
Примечание: следует проявлять большую осторожность, если
изменяемые объекты используются в качестве ключей карты.
Поведение карты не указано
если значение объекта изменилось
таким образом, что влияет на равных
сравнения в то время как объект является ключевым
на карте.