I just looked up the Set
interface and found that it mostly (or completely) only redeclares functions which are already in the Collection
interface.
The answer is in the java6 API for set.
"The Set interface places additional stipulations, beyond those inherited from the Collection interface, on the contracts of all constructors and on the contracts of the add, equals and hashCode methods. Declarations for other inherited methods are also included here for convenience. (The specifications accompanying these declarations have been tailored to the Set interface, but they do not contain any additional stipulations.)"