Did you know that :
Map
I am not sure if thatt's the official reason, but AbstractCollection avoids adding semantic constraints on potential subclasses. The semantics of equality are determined by the nature of the concrete inheriting data structure, and in particular based on whether your structure is ordered and whether it allows duplicates.
For example, Consider TreeSet, LinkedList, Bag, etc.
BTW, In relation to the code you posted, what's the actual type of whatever is returned by values? That should be a subclass with a concrete implementation.. If your map is empty when you run this code, it's possible that you would be ending up with something that does not consider two empty sets equal.