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