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