Sobes.tech
Junior — Middle

Ako sa vykonáva výpočet metódy hashCode v data class?

sobes.tech AI

Odpoveď od AI

V Kotlinu data class automaticky generuje metódu hashCode(), ktorá sa vypočíta na základe všetkých vlastností deklarovaných v hlavnom konštruktore triedy.

Algoritmus je približne nasledovný:

  • Pre každú vlastnosť sa zavolá jej vlastný hashCode().
  • Tieto hash kódy sa kombinujú pomocou špecifickej vzťahovej formuly (zvyčajne násobením prvočíslom a sčítaním), aby sa získal konečný hash kód objektu.

Toto zabezpečuje, že dva objekty data class s rovnakými hodnotami vlastností budú mať rovnaký hashCode(), čo je dôležité pre správnu funkciu v kolekciách ako HashSet alebo HashMap.

Príklad:

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