Коллекции middle
Почему ключ HashMap должен быть иммутабельным?
Ответ
Если изменить поле, участвующее в hashCode — объект окажется в «неправильном» bucket. contains() вернёт false. Объект потерян — ни найти, ни удалить. Утечка памяти. Решение: immutable-ключи (String, Integer, record).
Разбор: Если изменить поле, влияющее на hashCode, объект остаётся в старом bucket'е (он вычислялся при put), а поиск пойдёт в новый bucket — get/containsKey вернут промах, значение фактически теряется. Дистракторы правдоподобны, но неверны: HashMap не делает автоматический rehash при мутации ключа, не бросает ConcurrentModificationException и держит сильную ссылку на ключ, так что GC его не удалит.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.