[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-vozmozhna-li-situatsiya-kogda-hashmap-vyroditsya-v-spisok-dazhe-s-klyuchami-imeyushchimi-raznye-hashcode":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},479,"vozmozhna-li-situatsiya-kogda-hashmap-vyroditsya-v-spisok-dazhe-s-klyuchami-imeyushchimi-raznye-hashcode",12,"collections","Collections","📚","Возможна ли ситуация, когда HashMap выродится в список даже с ключами, имеющими разные hashCode()","Да, это возможно. Разные значения `hashCode()` могут попадать в одну корзину после операции `hash & (capacity - 1)`. Например, при capacity = 16 ключи с hashCode 1, 17, 33, 49 попадут в одну корзину (все дают остаток 1 при делении на 16).\n\nЭто происходит потому, что индекс корзины зависит не только от hashCode, но и от размера таблицы. Чем меньше capacity, тем выше вероятность коллизий. Именно поэтому HashMap дополнительно перемешивает хэш: `hash = hashCode ^ (hashCode >>> 16)` — старшие биты «подмешиваются» к младшим, чтобы уменьшить вероятность систематических коллизий.\n\nС Java 8 даже в этом случае цепочка преобразуется в красно-черное дерево при достижении 8 элементов, ограничивая деградацию до O(log N).\n\n> **На собеседовании:** объясните, что разные hashCode могут давать одинаковый индекс корзины. Упомяните дополнительное перемешивание хэша и treeification как защиту от деградации.","","middle",[15,16],"основы","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":34,"featuredSnippetReady":35},"Может ли HashMap вырожиться с разными hashCode — Gymterview","Да: разные hashCode могут давать одинаковый индекс корзины (hash & capacity-1). Пример: hashCode 1, 17, 33 при capacity=16. Защита: перемешивание + treeification.","HashMap: вырождение с разными hashCode — Gymterview","Да: разные hashCode → одинаковый индекс корзины. Перемешивание хэша и treeification как защита.",[25,26,27,28,29,30,31,32,33],"HashMap","коллизия","hashCode","вырождение","capacity","перемешивание","treeification","Java","собеседование","Да. Разные hashCode могут давать одинаковый индекс корзины: hash & (capacity-1). При capacity=16 hashCode 1, 17, 33 попадут в одну корзину. Защита: перемешивание (hash ^ hash>>>16) и treeification (Java 8+).",true]