Возможно ли потерять значение элемента из Map

«Возможно ли потерять значение элемента из Map» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, значение элемента в Map можно потерять, если ключ будет изменён после добавления. HashMap и другие реализации Map используют хэш-код ключа для хранения данных. Если ключ — изменяемый объект (например, ArrayList или кастомный класс), и его состояние изменится, хэш-код тоже изменится. В результате элемент станет недоступен через исходный ключ, хотя физически останется в Map.

Пример:

data class Key(var id: Int)

fun main() {
    val map = mutableMapOf<Key, String>()
    val key = Key(1)
    map[key] = "Value"
    key.id = 2 // Изменяем ключ
    println(map[key]) // null — элемент "потерялся"
}

Решение: Используйте неизменяемые объекты (String, Int, data class с val) в качестве ключей.