Помогите разобраться с этими "функциями", не очень понял зачем они нужны, как они работают, как они связаны с коллекциями, читал тот же Хабр с места не двинулся :/, я новичок:/, именно в Java, а то мой пост определяют как дубликат, хотя другой похожий вопрос вообще по Андроид разработке, помогите пожалуйста, ну очень прошу
Метод equals используется для сравнивания объектов.
Если сравнивать через == то будет выяснено, лежат ли данные, хранящиеся в сравниваемых переменных в одной и той же области памяти. Иногда это не то, что нужно. Например у вас есть 2 объекта одного класса User - один вы из БД достали, другой с сети пришёл. Они точно не будут лежать в одной области памяти, т.к. были созданы в разных местах через конструктор. Но вам может быть надо сделать так, чтобы программа определяла их как одинаковые, сравнивая не физическое их положение на диске, но значение их ID, кое хранится в их поле.
Именно для этого и нужен метод equals - в нём вы указываете, что переменные равны друг другу не только, если на одну и ту же область в памяти ссылаются, но и если их ID равны.
В случае коллекций этот метод нужен для, например, выяснения содержит ли коллекция к-л объект. Если не переопределить метод equals, то будут сравниваться ссылки на область в памяти, а не ID и вы получите false в неожиданных случаях. (В исходниках просто цикл обхода всей коллекции с вызовом метода equals происходит)
Метод же hashCode нужен для некоторых коллекций (HashMap, HashSet etc), которые, вызывая его, определяют в какой из внутренних массивов положить объект. Если его не переопределять наравне с equals вы можете столкнуться с неожиданным поведением таких коллекций. При этом нельзя также и одним только hashCode ограничиться - т.к. он типа int то максимальное кол-во уникальных значений меньше 5 млрд, что не всегда достаточно.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости