Встречается на собеседованиях • сегодня
В каком случае неэквивалентные объекты вернут одинаковый hashCode
Если два объекта не равны по equals(), но возвращают одинаковый hashCode(), это называется коллизией хеш-кода. Это допустимо, но нежелательно, так как снижает производительность hash-коллекций (например, HashMap).
Пример:
java
String s1 = "FB";
String s2 = "Ea";
System.out.println(s1.equals(s2)); // false
System.out.println(s1.hashCode() == s2.hashCode()); // true (оба = 2236)Причина:
hashCode()для строк вычисляется по формулеs[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1].- Для "FB":
'F' (70) * 31 + 'B' (66) = 2236. - Для "Ea":
'E' (69) * 31 + 'a' (97) = 2236.
Важно:
Коллизии не нарушают контракт hashCode(), но ухудшают работу hash-структур (увеличивают время поиска).

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы