💡 Java: переопределяешь equals() - переопредели и hashCode() — 8 сентября 2026 г. в 09:06:35.111
💡 Java: переопределяешь equals() - переопредели и hashCode() Два объекта с одинаковым email могут быть равны по equals(), но HashSet.contains() при этом вернёт false. Причина: HashSet и HashMap сначала используют хеш, чтобы определить, где искать объект, а затем проверяют равенство. Если хеши различаются, до equals() дело может не дойти. Правило: равные объекты обязаны иметь одинаковый hashCode(). При этом одинаковый хеш не гарантирует равенство - коллизии допустимы. В примере на картинке равенство определяется по email, поэтому хеш тоже вычисляется по нему. И ещё: не меняйте поля, участвующие в equals() и hashCode(), пока объект хранится в HashSet или используется как ключ HashMap - поиск может перестать его находить. #Java #OOP

