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