Главное отличие в том, как они обрабатывают свои ключи. HashMap использует сильные ссылки на ключи, в то время как WeakHashMap использует слабые ссылки.
HashMap:
HashMap, сборщик мусора GC не может удалить этот объект, пока сама HashMap существует и содержит ссылку на этот ключ.WeakHashMap:
WeakHashMap, сборщик мусора может его собрать, даже если он все еще присутствует в WeakHashMap.WeakHashMap. Это происходит при выполнении операций над картой (например, get, put, remove) или во время сборки мусора.WeakHashMap может быть неполной или содержать ссылки на уже собранные ключи (хотя соответствующие entry будут удалены позже).Сравнительная таблица:
| Признак | HashMap | WeakHashMap |
|---|---|---|
| Тип ссылки на ключ | Сильная | Слабая |
| Сборка мусора ключа | Невозможна, пока ключ в карте и карта доступна | Возможна, если нет сильных ссылок извне |
| Удаление entry | Только вручную или при очистке карты | Вручную или автоматически при сборке ключа |
| Применимость | Общее назначение, когда ключи должны сохраняться | Кэширование, когда ключи могут быть собраны мусором |
| Производительность | Как правило, стабильная | Может варьироваться из-за взаимодействия с GC |