Я читал во многих местах, говоря, что, переопределяя метод equals
в Java, должен переопределить метод hashCode
, иначе он "нарушит контракт".
Но до сих пор я не сталкивался с какой-либо проблемой, если я переопределяю только метод equals, но не метод hashCode.
Что такое контракт? И почему я не сталкиваюсь с какой-либо проблемой, когда нарушаю контракт? В этом случае я столкнулся бы с проблемой, если бы не переопределил метод hashCode?