Ответ
Если ключ в HashMap не является строкой, возможны следующие ошибки:
-
Неправильная реализация
equals()иhashCode()– если объект-ключ не переопределяет эти методы, хэш-карта может работать некорректно (дубликаты ключей, потеря значений). -
Изменяемый ключ – если ключ изменяется после добавления в
HashMap, его хэш-код изменится, и значение станет недоступным (но останется в мапе). -
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!