Hai ridefinito il metodo equals? L'implementazione di default ereditata da Object si limita a confrontare i riferimenti e non l'effettivo contenuto degli oggetti.