Хеш-код — это целочисленный результат работы метода, которому в качестве входного параметра передан объект.
Если более точно, то это битовая строка фиксированной длины, полученная из массива произвольной длины. Когда у разных объектов одинаковые хеш-коды называется — коллизией.
Equals - это метод, определенный в Object, который служит для сравнения объектов. При сравнении объектов при помощи == идет сравнение по ссылкам. При сравнении по equals() идет сравнение по состояниям объектов.
Свойства equals():
• Симметричность: Для двух ссылок, a и b, a.equals(b) тогда и только тогда, когда b.equals(a)
• Рефлексивность: для любого заданного значения x, выражение x.equals(x)
должно возвращать true.
Заданного — имеется в виду такого, что x != null
• Постоянство: повторный вызов метода equals() должен возвращать одно и тоже значение до тех пор, пока какое-либо значение свойств объекта не будет изменено.
• Транзитивность: Если a.equals(b) и b.equals(c), то тогда a.equals(c)
• Совместимость с h