Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: equals, contract

Что произойдет, если equals() всегда возвращает false?

Вопрос проверяет понимание контракта equals() и его влияния на корректность коллекций.

Короткий ответ

Если equals() всегда возвращает false, объекты никогда не считаются равными.
HashMap и HashSet будут считать все ключи и элементы уникальными.
Даже логически одинаковые объекты будут храниться отдельно.
Это приведет к дубликатам данных.

Длинный ответ

Метод equals() определяет логическое равенство объектов.

Роль equals

equals() отвечает за определение, считаются ли два объекта одинаковыми по смыслу.

Если он всегда возвращает false:

  1. Объекты никогда не признаются равными

  2. Проверка на существование элемента не работает

Поведение в HashMap

В HashMap это приводит к следующему:

  1. Даже при совпадении hashCode()

  2. equals() не подтверждает равенство

  3. Добавляется новый элемент

В результате:

  1. Значения не перезаписываются

  2. Возникают логические дубликаты

Поведение в HashSet

HashSet использует те же правила:

  1. Каждый объект считается уникальным

  2. Размер множества растет без ограничений

Пример

@Override
public boolean equals(Object o) {
    return false;
}

Такой объект нельзя корректно использовать как ключ или элемент множества.

Краткий вывод

equals() всегда false ломает логику уникальности.
Коллекции перестают защищать от дубликатов.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#equals

#contract

Подпишись на Java Developer в телеграм