Вопрос проверяет умение применять знания о hashCode() и equals() на практике.
В HashSet окажутся все добавленные объекты.
Одинаковый hashCode() не мешает добавлению элементов.
Так как equals() всегда возвращает false, элементы не считаются равными.
Каждый объект будет добавлен как уникальный.
HashSet внутри использует HashMap и полностью полагается на контракт hashCode() и equals().
Элемент считается дубликатом, только если equals() возвращает true.
Алгоритм добавления:
Вычисляется hashCode()
Определяется корзина
Выполняется сравнение через equals()
В данном случае:
hashCode() одинаковый
equals() всегда false
Это приводит к тому, что:
Все элементы попадают в одну корзину
Ни один элемент не считается равным другому
HashSet добавляет каждый объект
Пример:
Set<MyObject> set = new HashSet<>();
set.add(obj1);
set.add(obj2);
set.add(obj3);
Размер множества будет равен количеству добавлений.
При equals() == false HashSet теряет смысл уникальности.
Количество элементов равно числу добавленных объектов.