Встречается на собеседованиях • сегодня

Когда у разных объектов могут быть одинаковые hashCode

В Java разные объекты могут иметь одинаковые hashCode из-за ограниченного диапазона int (2^32 значений). Это называется коллизией хеш-кодов.

Пример:

java
String s1 = "FB";  
String s2 = "Ea";  
System.out.println(s1.hashCode()); // 2236  
System.out.println(s2.hashCode()); // 2236  

Причины коллизий:

  1. Ограничение int – хеш-код int, а объектов бесконечно много.
  2. Плохая хеш-функция – если метод hashCode() реализован неудачно (например, возвращает константу).
  3. Естественные коллизии – разные данные могут давать одинаковый хеш (как в примере выше).

Важно:

  • Коллизии не нарушают контракт equals/hashCode, но ухудшают производительность HashMap/HashSet.
  • Хорошая хеш-функция минимизирует коллизии, но не исключает их полностью.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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