Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: hashset, uniqueness, hashcode

Сколько элементов окажется в HashSet, если добавить несколько объектов с одинаковым hashCode и equals=false?

Вопрос проверяет умение применять знания о hashCode() и equals() на практике.

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

В HashSet окажутся все добавленные объекты.
Одинаковый hashCode() не мешает добавлению элементов.
Так как equals() всегда возвращает false, элементы не считаются равными.
Каждый объект будет добавлен как уникальный.

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

HashSet внутри использует HashMap и полностью полагается на контракт hashCode() и equals().

Как HashSet определяет уникальность

Элемент считается дубликатом, только если equals() возвращает true.

Алгоритм добавления:

  1. Вычисляется hashCode()

  2. Определяется корзина

  3. Выполняется сравнение через equals()

Условия задачи

В данном случае:

  1. hashCode() одинаковый

  2. equals() всегда false

Результат добавления

Это приводит к тому, что:

  1. Все элементы попадают в одну корзину

  2. Ни один элемент не считается равным другому

  3. HashSet добавляет каждый объект

Пример:

Set<MyObject> set = new HashSet<>();
set.add(obj1);
set.add(obj2);
set.add(obj3);

Размер множества будет равен количеству добавлений.

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

При equals() == false HashSet теряет смысл уникальности.
Количество элементов равно числу добавленных объектов.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Java

    Java

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

#hashset

#uniqueness

#hashcode

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