Вопрос с собеседования: Как в сет добавить два одинаковых объекта?
Правильный ответ: никак, на то он и сет.
Если вдруг такое понадобилось, то нужно использовать другую структуру для хранения. Можно даже назвать ее MyMagicSet чтобы взорвать кому-нибудь моск.
Я полагаю, что в этом случае необходимо добавить идентификатор объекта, переопределить equals, в котором проверять по бакету самый большой id объекта с необходимыми нам данными. Если id>1, тогда не добавлять. Но опять же- объекты идентичны по полям, кроме id, а это уже изменение структуры класса, что не желательно.