[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-v-chem-raznitsa-mezhdu-hashmap-i-weakhashmap":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},469,"v-chem-raznitsa-mezhdu-hashmap-i-weakhashmap",12,"collections","Collections","📚","В чем разница между HashMap и WeakHashMap","`WeakHashMap` — это реализация Map, в которой ключи хранятся как `WeakReference`. Если на ключ не осталось сильных (strong) и мягких (soft) ссылок, сборщик мусора удалит ключ, и соответствующая запись будет автоматически удалена из WeakHashMap.\n\nВ Java существуют четыре типа ссылок по убыванию силы:\n\n- Strong Reference — обычная ссылка, объект не удаляется GC.\n- SoftReference — удаляется только при нехватке памяти.\n- WeakReference — удаляется при ближайшей сборке мусора.\n- PhantomReference — используется для финализации.\n\nПрактический сценарий: расширение объектов дополнительной информацией без модификации их классов. Объект используется как ключ в WeakHashMap, а значение — дополнительные метаданные. Когда объект становится недостижимым в основном коде, запись автоматически исчезает из карты, предотвращая утечку памяти.\n\nWeakHashMap очищает устаревшие записи при каждом обращении к карте (get, put, size), используя ReferenceQueue для обнаружения собранных ключей.\n\n> **На собеседовании:** объясните через типы ссылок в Java. Приведите пример: хранение метаданных для объектов, которые могут быть собраны GC.","","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]