Когда вы переопределяете equals() для определения логического равенства, вы должны также переопределить hashCode() — потому что коллекции на основе хеша (HashMap, ) полагаются на контракт, что . Нарушение этого приводит к незаметным, трудноуловимым ошибкам.
