Обсуждалось с интервьюером относительно внутренней реализации Java Hashmaps и того, как оно будет выглядеть, если мы переопределим equals(), но не метод HashCode() для объекта Employee.
Он сказал мне, что hashCode для двух разных объектов никогда не будет одинаковым для реализации object.hashCode() по умолчанию, если мы не переопределим hashCode().
Кроме того, мне сказали, что одно ведро может иметь только уникальный Hashcode, а объекты с одинаковыми хэш-кодами идут в одном ведре. То, что я знаю, противоречит первой. Duh!
Из того, что я вспомнил, я сказал ему, что контракты Java Hashcode говорят, что два разных объекта могут иметь один и тот же hashcode().
По словам моего интервьюера, объект object.hashcode() по умолчанию никогда не имеет одного и того же hashcode() для двух разных объектов. Это правда?
Можно ли даже удаленно написать код, демонстрирующий это. Из того, что я понимаю, Object.hashcode() может генерировать 2 ^ 30 уникальных значений, как возникает конфликт, с такой низкой вероятностью столкновения, чтобы продемонстрировать, что два разных объекта могут получить один и тот же hashcode() с помощью метода классов объектов.
Или он прав, с реализацией Object.HashCode() по умолчанию, у нас никогда не будет столкновения. Два разных объекта никогда не могут иметь один и тот же HashCode. Если да, то почему многие руководства Java явно не говорят об этом.
Как я могу написать код для демонстрации этого? Потому что, демонстрируя это, я также могу доказать, что ведро в хэш-карте может содержать разные HashCodes (я пытался показать ему отладчик, где hashMap был расширен, но он сказал мне, что это просто логическая реализация, а не внутренний алгоритм?)