Sobes.tech
Junior — Middle

Kuidas toimub hashCode meetodi arvutamine andmeklassis?

sobes.tech AI

Vastus AI-lt

Kotlinis, data class automaatselt ģenerē hashCode() metodi, kas tiek aprēķināta, pamatojoties uz visām klases galvenajā konstruktorā deklarētajām īpašībām.

Algoritms ir aptuveni šāds:

  • Katrai īpašībai tiek izsaukts tās hashCode().
  • Šie hash kodi tiek apvienoti, izmantojot noteiktu formulu (parasti ar reāla skaitļa reizināšanu un saskaitīšanu), lai iegūtu galīgo objekta hashCode().

Tas nodrošina, ka divi data class objekti ar vienādām īpašību vērtībām būs ar vienādu hashCode(), kas ir svarīgi to pareizai darbībai kolekcijās, piemēram, HashSet vai HashMap.

Piemērs:

data class User(val id: Int, val name: String)

val user1 = User(1, "Alice")
val user2 = User(1, "Alice")

println(user1.hashCode() == user2.hashCode()) // true