[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-kak-rabotaet-hashmap-pri-popytke-sokhranit-dva-elementa-s-odinakovym-hashcode-no-raznymi-equals":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},476,"kak-rabotaet-hashmap-pri-popytke-sokhranit-dva-elementa-s-odinakovym-hashcode-no-raznymi-equals",12,"collections","Collections","📚","Как работает HashMap при попытке сохранить два элемента с одинаковым hashCode(), но разными equals()","Оба элемента будут сохранены в одной корзине. Это ситуация называется коллизией хэш-функции.\n\nАлгоритм:\n\n1. Первый элемент добавляется в корзину, определенную по hashCode().\n2. При добавлении второго элемента вычисляется тот же индекс корзины (hashCode одинаков).\n3. HashMap обходит список в корзине и вызывает `equals()` для каждого ключа.\n4. Поскольку `equals()` возвращает false, ключи считаются разными.\n5. Второй элемент добавляется в конец связного списка (или в дерево, если список преобразован).\n\nПри последующем поиске через `get()` HashMap найдет нужную корзину по hashCode, а затем в цепочке найдет конкретный элемент по equals(). Если коллизий много, поиск в цепочке деградирует до O(N) для списка или O(log N) для дерева.\n\n> **На собеседовании:** объясните, что оба элемента попадут в одну корзину и будут различены через equals(). Это классический вопрос на понимание связи hashCode() и equals().","","middle",[15,16],"основы","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":34,"featuredSnippetReady":35},"Коллизия hashCode в HashMap — два элемента в одной корзине — Gymterview","Оба элемента сохраняются в одной корзине. HashMap обходит цепочку, вызывает equals(). Если equals() false — добавляет в конец списка\u002Fдерева. Это коллизия.","Коллизия hashCode в HashMap — Gymterview","Оба элемента в одной корзине. equals() false → оба сохраняются в цепочке. Это коллизия хэш-функции.",[25,26,27,28,29,30,31,32,33],"HashMap","коллизия","hashCode","equals","корзина","цепочка","chaining","Java","собеседование","Оба попадают в одну корзину (одинаковый hashCode → одинаковый индекс). HashMap обходит цепочку, вызывая equals() для каждого ключа. Поскольку equals() false — ключи разные, оба элемента сохраняются в цепочке. Это коллизия.",true]