Junior — Middle
Kan een gegevensklasse met wijzigbare eigenschappen worden gebruikt als sleutel in een hash-tabel?
sobes.tech AI
Antwoord van AI
Het wordt niet aanbevolen om een gegevensklasse met wijzigbare eigenschappen te gebruiken als sleutel in een hash-tabel. Sleutels in hash-tabellen moeten onveranderlijk zijn, omdat het wijzigen van de eigenschappen van een object dat betrokken is bij de berekening van de hash-code of vergelijking kan leiden tot het verlies van toegang tot het element.
Bijvoorbeeld, als een eigenschap van de data-klasse verandert, die invloed heeft op hashCode of equals, wordt het object niet meer gevonden in de hash-tabel:
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" // Eigenschap wijzigen
println(map[user]) // Kan null teruggeven, omdat hashCode is veranderd
Het is daarom beter om onveranderlijke objecten of sleutels met onveranderlijke eigenschappen te gebruiken.