[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-v-chem-raznitsa-mezhdu-hashmap-i-identityhashmap":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},468,"v-chem-raznitsa-mezhdu-hashmap-i-identityhashmap",12,"collections","Collections","📚","В чем разница между HashMap и IdentityHashMap","`IdentityHashMap` — это реализация Map, которая использует сравнение ссылок (`==`) вместо `equals()` при проверке ключей и значений, и `System.identityHashCode()` вместо `hashCode()`.\n\n| Характеристика | HashMap | IdentityHashMap |\n|---|---|---|\n| Сравнение ключей | equals() | == (ссылочное) |\n| Хэш-функция | hashCode() | System.identityHashCode() |\n| Мутабельные ключи | Опасно (потеря элемента) | Безопасно |\n| Реализация | Массив корзин + списки\u002Fдеревья | Линейное пробирование |\n| Применение | Общее назначение | Сериализация, клонирование, обход графов |\n\nДва ключа `k1` и `k2` считаются равными в IdentityHashMap только если `k1 == k2`. Это полезно, когда нужно различать объекты, даже если их `equals()` возвращает true.\n\nТипичные сценарии использования: обход графа объектов при сериализации (чтобы отслеживать уже посещенные объекты), реализация клонирования, профилирование — везде, где важна именно идентичность объекта, а не его логическое равенство.\n\n> **На собеседовании:** ключевая мысль — сравнение по ссылке (==) вместо equals(). Назовите практический сценарий: сериализация \u002F обход графа объектов.","","middle",[15,16],"основы","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":34,"featuredSnippetReady":35},"HashMap vs IdentityHashMap — сравнение по ссылке вместо equals — Gymterview","IdentityHashMap сравнивает ключи через == вместо equals(), использует System.identityHashCode(). Применение: сериализация, клонирование, обход графов объектов.","HashMap vs IdentityHashMap — Gymterview","IdentityHashMap: сравнение ключей через == вместо equals(). Для сериализации и обхода графов.",[25,26,27,28,29,30,31,32,33],"HashMap","IdentityHashMap","equals","==","identityHashCode","сериализация","клонирование","Java","собеседование","IdentityHashMap сравнивает ключи через == (ссылочное равенство) вместо equals(), использует System.identityHashCode() вместо hashCode(). Применение: сериализация, клонирование, обход графов объектов — когда важна идентичность, а не логическое равенство.",true]