Junior — Middle
Miks Kotlinis ülekirjutatakse hashCode meetod universaalsetele objektidele?
sobes.tech AI
Vastus AI-lt
Kotlinis on hashCode meetod üle kirjutatud üldistele objektidele, et tagada korrektne toimimine hash-põhiste andmestruktuuridega, nagu HashMap või HashSet. Vaikimisi võib hashCode põhineda objekti mäluaadressil, mis ei sobi, kui loogiliselt võrdsed objektid peaksid omama sama hash-koodi.
hashCode ja equals ühiselt üle kirjutades tagatakse, et võrdsed objektid omavad sama hash-koodi, mis on oluline õige otsingu, sisestamise ja kustutamise jaoks kogumikes.
Näide üle kirjutamisest data class'is (Kotlin genereerib automaatselt equals ja hashCode):
data class User(val id: Int, val name: String)
Kui klass ei ole data, tuleb see käsitsi üle kirjutada:
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()
}