Встречается на 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()` должен их корректно обрабатывать.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы