Junior — Middle
È possibile utilizzare una classe di dati con proprietà modificabili come chiave in una tabella hash?
sobes.tech AI
Risposta dell'AI
Non è consigliabile utilizzare una classe dati con proprietà modificabili come chiave in una tabella hash. Le chiavi nelle tabelle hash devono essere immutabili, poiché modificare le proprietà di un oggetto che partecipa al calcolo dell'hash o del confronto può portare alla perdita dell'accesso all'elemento.
Ad esempio, se una proprietà della classe data cambia, influenzando hashCode o equals, l'oggetto non verrà più trovato nella tabella 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" // Modifica della proprietà
println(map[user]) // Potrebbe restituire null, poiché hashCode è cambiato
Per questo motivo, è meglio usare oggetti immutabili o chiavi con proprietà immutabili.