Sobes.tech
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()
}