Sobes.tech
Back to questions
Junior — Middle
57

Как определить объект, отвечающий за генерацию хеш-кода в Java?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

В Java объект, отвечающий за генерацию хеш-кода, — это сам объект, у которого вызывается метод hashCode().

Каждый класс в Java наследует метод hashCode() от класса Object. По умолчанию он возвращает целочисленное значение, связанное с адресом объекта в памяти, но часто этот метод переопределяют для корректной работы с коллекциями (например, HashMap, HashSet).

Если нужно определить хеш-код для своего класса, нужно переопределить метод hashCode(). Обычно это делают вместе с переопределением equals().

Пример:

public class Person {
    private String name;
    private int age;

    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + (name != null ? name.hashCode() : 0);
        result = 31 * result + age;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person other = (Person) obj;
        return age == other.age && (name != null ? name.equals(other.name) : other.name == null);
    }
}

Таким образом, генерация хеш-кода — это ответственность самого объекта через метод hashCode().