Встречается на собеседованиях • сегодня

Как называются принципы условия контракта hashCode в Java

Основные принципы контракта hashCode() в Java:

  1. Консистентность: Если объект не изменялся, hashCode() должен возвращать одно и то же значение при многократных вызовах.
  2. Равенство объектов: Если a.equals(b) == true, то a.hashCode() == b.hashCode().
  3. Обратное необязательно: Если хэш-коды равны, объекты не обязательно равны (коллизии допустимы).

Пример нарушения контракта:

java
class BadHash {
    int value;
    
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof BadHash)) return false;
        return value == ((BadHash) o).value;
    }
    
    // Нарушение: hashCode не согласован с equals
    @Override
    public int hashCode() {
        return 42; // Все объекты имеют одинаковый хэш
    }
}

Нарушение контракта может привести к проблемам в HashSet, HashMap и других хэш-коллекциях.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы