[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-budet-li-rabotat-hashmap-esli-vse-dobavlyaemye-klyuchi-budut-imet-odinakovyy-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":18,"progress":19,"seo":20},490,"budet-li-rabotat-hashmap-esli-vse-dobavlyaemye-klyuchi-budut-imet-odinakovyy-hashcode",12,"collections","Collections","📚","Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()","Да, HashMap будет работать корректно, но потеряет свое главное преимущество — O(1) доступ. Все элементы попадут в одну корзину и образуют связный список (или красно-черное дерево при 8+ элементах).\n\nПроизводительность деградирует:\n\n- До Java 8: все операции O(N) — полный перебор списка.\n- С Java 8: O(log N) после treeification — дерево обеспечивает логарифмический поиск.\n\nФункционально HashMap продолжит корректно различать ключи через `equals()`, просто гораздо медленнее. Этот сценарий может быть использован для DoS-атаки (hash collision attack), поэтому в Java 8 была добавлена treeification как защита.\n\n> **На собеседовании:** ответ — да, будет работать, но вырождается в список\u002Fдерево. Упомяните hash collision attack и treeification как защиту.","","middle",[15,16,17],"security","performance","jcf",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":35,"featuredSnippetReady":36},"HashMap с одинаковым hashCode — вырождение и hash collision attack — Gymterview","Да, но вырождается: O(N) до Java 8, O(log N) с Java 8. equals() различает ключи. Сценарий DoS-атаки — treeification как защита.","HashMap с одинаковым hashCode — Gymterview","Работает, но деградирует. O(N)\u002FO(log N). Hash collision attack — treeification защищает.",[26,27,28,29,30,31,32,33,34],"HashMap","hashCode","коллизия","вырождение","DoS","hash collision attack","treeification","Java","собеседование","Да, корректно, но деградирует: все элементы в одной корзине. O(N) до Java 8, O(log N) с Java 8 (treeification). equals() различает ключи. Сценарий hash collision attack — treeification добавлена как защита.",true]