Sobes.tech
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.