Reputation: 25882
In java, and there is one catch here. The objects are already compiled and the hash() and equals() methods therefore cannot be over written. Throwing it into a set, then back into a list will not work because the criteria for uniqueness isn't currently defined in equals() and this cannot be overridden.
Upvotes: 1
Views: 212
Reputation: 120198
You should still be able to create subclasses and create equals
and hashcode
methods that work, unless the classes/methods are final
.
If that is the case, you could use composition, basically create a wrapper for the things you are putting in the collection, and have the wrapper's equals
and hashcode
implement the contract correctly, for the thing being wrapped.
You are in a tough position, because what I am reading is that the original classes are not following the contract for equals
and hashcode
which is a real problem in Java. It's a pretty serious bug.
Upvotes: 3
Reputation: 20663
Write a custom Comparator for your objects and use Collections.sort() to sort your list. And then remove duplicates by going though a list in a loop.
Upvotes: 1