Назад к вопросам
IT One
Junior — Middle
68
Можете объяснить, как работает класс WeakHashMap в Java и в чем его отличие от обычной HashMap?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Класс WeakHashMap в Java — это реализация интерфейса Map, где ключи хранятся с использованием слабых ссылок (WeakReference). Это значит, что если на ключ больше нет сильных ссылок в программе, то он может быть собран сборщиком мусора, и соответствующая пара ключ-значение автоматически удалится из карты.
Отличия от обычного HashMap:
- В
HashMapключи и значения хранятся через сильные ссылки, поэтому объекты, используемые в качестве ключей, не удаляются сборщиком мусора, пока они находятся в карте. - В
WeakHashMapключи — слабые ссылки, что позволяет автоматически очищать карту от записей, ключи которых больше не используются в программе.
Пример использования:
import java.util.WeakHashMap;
public class WeakHashMapExample {
public static void main(String[] args) {
WeakHashMap<Object, String> map = new WeakHashMap<>();
Object key = new Object();
map.put(key, "value");
System.out.println("Before nulling key: " + map);
key = null; // Убираем сильную ссылку на ключ
System.gc(); // Запрашиваем сборку мусора
// Через некоторое время запись может быть удалена
System.out.println("After GC: " + map);
}
}
Таким образом, WeakHashMap полезен для кэширования, когда нужно, чтобы записи автоматически удалялись при отсутствии внешних ссылок на ключи.