Junior — Middle
Waarom wordt in Kotlin de methode hashCode overschreven voor universele objecten?
sobes.tech AI
Antwoord van AI
In Kotlin wordt de methode hashCode overschreven voor universele objecten om correcte werking met hash-gebaseerde datastructuren zoals HashMap of HashSet te garanderen. Standaard kan hashCode gebaseerd zijn op het geheugenadres van het object, wat niet geschikt is als logisch gelijke objecten dezelfde hash moeten hebben.
Het overschrijven van hashCode samen met equals zorgt ervoor dat objecten die als gelijk worden beschouwd dezelfde hash-code hebben, wat belangrijk is voor correcte zoek-, invoeg- en verwijderbewerkingen in collecties.
Voorbeeld van overschrijving in een data class (Kotlin genereert automatisch equals en hashCode):
data class User(val id: Int, val name: String)
Als de klasse geen data class is, moet deze handmatig worden overschreven:
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is User) return false
return id == other.id && name == other.name
}
override fun hashCode(): Int {
return 31 * id + name.hashCode()
}