Sobes.tech
Назад к вопросам
Junior — Middle
66

Какие ситуации могут привести к исчезновению элемента из коллекции HashMap?

Компании, где спрашивали
ИннотехИннотех

Ответ от нейросети

sobes.tech AI

Элемент может исчезнуть из коллекции HashMap в следующих ситуациях:

  • Если ключ или значение были удалены явно с помощью методов remove().
  • Если используется WeakHashMap, и ключ больше не имеет сильных ссылок, то элемент может быть удалён сборщиком мусора.
  • При ошибках в реализации методов hashCode() и equals() у ключей, что может привести к невозможности найти элемент.
  • Если коллекция была изменена в другом потоке без синхронизации, возможны непредсказуемые результаты, включая исчезновение элементов.

Пример с WeakHashMap:

import java.util.WeakHashMap;

public class WeakHashMapExample {
    public static void main(String[] args) throws InterruptedException {
        WeakHashMap<Object, String> map = new WeakHashMap<>();
        Object key = new Object();
        map.put(key, "value");

        System.out.println("Before GC: " + map);
        key = null; // Убираем сильную ссылку на ключ

        System.gc(); // Запускаем сборщик мусора
        Thread.sleep(1000); // Ждём

        System.out.println("After GC: " + map); // Элемент может исчезнуть
    }
}