Какие ошибки могут быть если ключ в HashMap не является строкой

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

Ответ

Если ключ в HashMap не является строкой, возможны следующие ошибки:

  1. Неправильная реализация equals() и hashCode() – если объект-ключ не переопределяет эти методы, хэш-карта может работать некорректно (дубликаты ключей, потеря значений).

  2. Изменяемый ключ – если ключ изменяется после добавления в HashMap, его хэш-код изменится, и значение станет недоступным (но останется в мапе).

  3. Null-ключ – если ключ null, HashMap разрешает только один такой ключ (если не обработано явно).

Пример с изменяемым ключом:

data class User(var id: Int)

val map = HashMap<User, String>()
val user = User(1)
map[user] = "Alice"
user.id = 2 // Теперь map[user] вернет null!