Встречается на 2% собеседований по Java

Что произойдет при одинаковом hashCode у элементов

Если у объектов одинаковый hashCode, они попадут в одну корзину (bucket) в HashMap или HashSet. Однако, это не означает, что они считаются одинаковыми — для проверки равенства используется метод equals().

Пример:

java
class Person {
    String name;
    int age;

    @Override
    public int hashCode() { return 1; } // Фиксированный hashCode
text
@Override
public boolean equals(Object o) { /*...*/ }

}

// В HashMap:
Map<Person, String> map = new HashMap<>();
map.put(new Person("Alice", 25), "Alice");
map.put(new Person("Bob", 30), "Bob"); // Оба попадут в одну корзину

text
**Последствия:**  
- При коллизиях производительность деградирует до O(n) (как в LinkedList), т.к. поиск будет линейным внутри корзины.  
- `equals()` определит, являются ли объекты одинаковыми. Если `equals` вернет `false`, оба объекта останутся в коллекции.  

**Идеально:**  
Разные объекты должны иметь разные `hashCode`, но если коллизии неизбежны — `equals()` должен их корректно обрабатывать.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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