Sobes.tech
Junior — Middle

Jak obliczana jest metoda hashCode w klasie danych?

sobes.tech AI

Odpowiedź od AI

W Kotlinie data class automatycznie generuje metodę hashCode(), która jest obliczana na podstawie wszystkich właściwości zadeklarowanych w głównym konstruktorze klasy.

Algorytm jest mniej więcej następujący:

  • Dla każdej właściwości wywoływany jest jej własny hashCode().
  • Te kody hash są łączone za pomocą określonej formuły (zwykle z użyciem mnożenia przez liczbę pierwszą i dodawania), aby uzyskać końcowy kod hash obiektu.

Zapewnia to, że dwa obiekty data class z tymi samymi wartościami właściwości będą miały ten sam hashCode(), co jest ważne dla poprawnego działania w kolekcjach takich jak HashSet czy HashMap.

Przykład:

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