Об’єкти, які слід вважати однаковими, можуть бути неправильно ідентифіковані, що призведе до дублювання наборів або неправильного пошуку з карт. У цьому прикладі без перевизначення дорівнює та hashCode, набір розглядатиме person1 і person2 як різні об’єкти, навіть якщо їхні атрибути однакові.20 червня 2023 р

У Java, якщо ви нічого не змінюєте, Рівність визначається як посилання на об’єкти, які є рівними, а хеш-код є бітовим шаблоном посилання.

5 відповідей. Якщо ви не заміните hashcode(), тоді реалізація за замовчуванням у класі Object буде використовуватися колекціями.

Якщо ви реалізуєте тип значення, вам слід розглянути можливість перевизначення методу Equals. Ви можете збільшити продуктивність у порівнянні зі стандартною реалізацією методу Equals у ValueType, коли ви це зробите.

Оскільки стандартний метод дорівнює просто гарантує, що два об’єкти є одним і тим же об’єктом визначення хеш-коду без перевизначення дорівнює не повинно порушувати контракт між хеш-кодом і дорівнює. Ну, хіба що ви створюєте дивний хеш-код, який покладається на випадкові числа, я вважаю, але це ніколи не буде правильним.

Розглянемо клас Person з такими атрибутами, як ім'я та вік. Якщо ми хочемо порівняти два об’єкти Person на основі їхніх імен, нам потрібно перевизначити метод equals і порівняти атрибут name обох об’єктів. Інакше два об’єкти Person з однаковою назвою будуть вважатися нерівними.