Ответ
hashCode() — это метод класса Object, возвращающий целочисленное значение (хэш-код), которое используется в хэш-коллекциях (HashMap, HashSet и т.д.) для быстрого поиска объектов.
Основные правила:
- Если
equals()возвращаетtrueдля двух объектов, ихhashCode()должен быть одинаковым. - Обратное не обязательно: разные объекты могут иметь одинаковый хэш (коллизия).
- Хэш-код должен быть стабильным (не меняться, если объект не изменен).
Пример:
@Override
public int hashCode() {
int prime = 31;
int result = 1;
result = prime * result + (field1 == null ? 0 : field1.hashCode());
result = prime * result + (field2 == null ? 0 : field2.hashCode());
return result;
}
Используется 31, так как это простое число, а умножение на него можно оптимизировать (31 * x = (x << 5) - x).