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().