Junior — Middle
Pode usar uma classe de dados com propriedades modificáveis como chave numa tabela hash?
sobes.tech IA
Resposta da IA
Não é recomendado usar uma classe de dados com propriedades modificáveis como chave numa tabela hash. As chaves nas tabelas hash devem ser imutáveis, pois a alteração das propriedades de um objeto que participa no cálculo do hash ou na comparação pode levar à perda de acesso ao elemento.
Por exemplo, se uma propriedade da classe data mudar, afetando hashCode ou equals, o objeto já não será encontrado na tabela hash:
data class User(var id: Int, var name: String)
val map = hashMapOf<User, String>()
val user = User(1, "Alice")
map[user] = "Developer"
user.name = "Bob" // Alteração da propriedade
println(map[user]) // Pode retornar null, pois hashCode mudou
Por isso, é melhor usar objetos imutáveis ou chaves com propriedades imutáveis.