Метод hashCode() необходим для вычисления хэш кода переданного в качестве входного параметра объекта. В Java это целое число, в более широком смыле — битовая строка фиксированной длины, полученная из массива произвольной длины. Этот метод реализован таким образом, что для одного и того же входного объекта, хэш код всегда будет одинаковым. Следует понимать, что в Java множество возможных хэш кодов ограничено типом int, а множество объектов ничем не ограничено. Из-за этого, вполне возможна ситуация, что хэш коды разных объектов могут совпасть.
Если хэш коды разные, то и объекты гарантированно разные;
если хэш коды равны, то объекты могут не обязательно равны.
Если хэш коды разные, то и объекты гарантированно разные;
если хэш коды равны, то объекты могут не обязательно равны.