Встречается на собеседованиях • сегодня
Как переопределяешь hashCode
Для переопределения hashCode() в Java нужно следовать контракту:
- Если
equals()возвращаетtrueдля двух объектов, ихhashCode()должен быть одинаковым - Если
equals()возвращаетfalse,hashCode()может быть разным (но не обязан) hashCode()должен возвращать одинаковое значение для одного объекта при многократных вызовах
Пример с использованием Objects.hash() (Java 7+):
java
@Override
public int hashCode() {
return Objects.hash(field1, field2, field3);
}Классический подход (до Java 7):
java
@Override
public int hashCode() {
int result = 17;
result = 31 * result + field1.hashCode();
result = 31 * result + (field2 != null ? field2.hashCode() : 0);
return result;
}Важно включать все значимые поля, которые участвуют в equals(). Числа 17 и 31 часто используются как начальное значение и множитель, так как они простые и помогают избежать коллизий.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы