A duplicates check is heavily dependent on the attributes of an object. If the check is being performed on an object then it's necessary to consider what parts of that object are unique and compare those values. However there are some downfalls to this approach, if the objects will likely have the same values then this approach becomes more difficult.
From past project experience, an ID tag is one of the easiest forms of duplicate detection to implement. When the object is initialized, assign a unique ID value so only the ID must be checked in a duplicate check.
A data structure of sorted objects makes the process a little easier because you know where the object should be, if it exists.