Sobes.tech
Junior — Middle

¿Se puede usar una clase de datos con propiedades modificables como clave en una tabla hash?

sobes.tech AI

Respuesta de la IA

No se recomienda usar una clase de datos con propiedades modificables como clave en una tabla hash. Las claves en las tablas hash deben ser inmutables, ya que modificar las propiedades de un objeto que participa en el cálculo del hash o en la comparación puede llevar a perder el acceso al elemento.

Por ejemplo, si una propiedad de la clase data cambia, afectando a hashCode o equals, el objeto ya no será encontrado en la tabla 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" // Cambio en la propiedad

println(map[user]) // Puede devolver null, ya que hashCode cambió

Por lo tanto, es mejor usar objetos inmutables o claves con propiedades inmutables.