Sobes.tech
Junior — Middle

Ինչպես է կատարվում hashCode մեթոդի հաշվարկը data class-ում:

sobes.tech AI

Պատասխան AI-ից

Կոտլինում, data class-ը ավտոմատ կերպով ստեղծում է hashCode() մեթոդը, որը հաշվարկվում է դասի հիմնական կոնստրուկտորում հայտարարված բոլոր հատկությունների վրա:

Ալգորիթմը մոտավորապես հետևյալն է.

  • Յուրաքանչյուր հատկության համար կանչվում է նրա սեփական hashCode()-ը:
  • Այս հեշ-կոդերը համակցվում են հատուկ ֆորմուլայով (հաճախ՝ բազմապատկելով մի թիվով և գումարելով), որպեսզի ստացվի վերջնական hashCode()-ը:

Այսպիսով, երկու data class օբյեկտներ, որոնք ունեն նույն հատկությունների արժեքները, կունենան նույն hashCode(), ինչը կարևոր է HashSet կամ HashMap նման հավաքածուներում ճիշտ գործելու համար:

Օրինակ:

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