Этот вопрос проверяет понимание назначения метода hashCode() и его связи с коллекциями в Java.
Метод hashCode() возвращает числовое значение объекта, используемое для быстрого поиска в хэш-таблицах (например, HashMap). Он должен быть согласован с equals(): если два объекта равны по equals(), их hashCode() должен быть одинаковым.
1. Назначение hashCode():
Используется в хэш-коллекциях (HashMap, HashSet) для определения "корзины" (bucket), куда будет помещен объект.
Ускоряет поиск: вместо перебора всех элементов сравниваются хэши.
2. Контракт с equals():
Если a.equals(b) == true, то a.hashCode() == b.hashCode().
Обратное не обязательно: разные объекты могут иметь одинаковый хэш (коллизия).
Пример:
class Person {
String name;
int age;
@Override
public int hashCode() {
return Objects.hash(name, age); // Генерация хэша на основе полей
}
}Вывод:hashCode() критичен для работы хэш-коллекций. Всегда переопределяйте его вместе с equals().