HashCode, equals i kolekcje
Nie wiem jak Wy, ale ja nigdy nie zagłębiałem się w kwestię hashCode i equals. Zawsze generowałem obydwa elementy używając IDE z uwzględniając identyczne parametry. Pozwalało mi to zachować myśl, że gdy equals obiektu zwróci wartość 'true' to hash będzie zawsze identyczny. Wiedziałem, że tak powinno być, ale nigdy nie myślałem dlaczego. Gdy zostałem ostatnio zapytany o to, okazało się, że nie mam pojęcia dlaczego i po co się tak robi. Zagłębiając się w literaturę o tym poświęconą postanowiłem przedstawić Wam wiedzę, którą powinna posiadać każda osoba korzystająca z kolekcji. Wychodzi więc, że każdy. Szkoda, że wcześniej nikt nie wyjaśnił mi, że wiedza o tym jest niezbędna. Kontrakt Tak jak wspomniałem we wstępie, gdy equals zwróci wartość 'true', możemy spodziewać się, że hash będzie identyczny. Nigdy jednak nie zastanawiałem się jak wygląda sytuacja odwrócona. Czy gdy hash jest identyczny to zawsze equals zwraca 'true'? I tutaj wyszło na to, że nie. W Javie w...