Il equals() serve per stabilire se due oggetti sono di contenuto/significato "equivalente". Ridefinire il public boolean equals(Object) in una classe permette quindi di verificare in modo generalizzato se due oggetti di quella classe hanno contenuto/significato "equivalente". Se non si ridefinisce equals, resta quello "ereditato" da Object, che si basa SOLO sulla identità degli oggetti e NON sul loro contenuto. Chiaramente devi stabilire tu COSA confrontare cioè in che cosa due oggetti sono da ritenere "equivalenti".
E detto in generale, se si ridefinisce equals() si dovrebbe anche ridefinire hashCode(), perché tra i due c'è un contratto ben preciso.