Note: Add a new criteria to compare method if sizes are equal.
Map<X, Set<Y>> notSortedMap = ...
Map<X, Set<Y>> sortedMap = new TreeMap<>(new Comparator<X>() {
@Override
public int compare(X firstX, X secondX) {
return Integer.valueOf(notSortedMap.get(secondX).size()).compareTo(Integer.valueOf(notSortedMap.get(firstX).size()));
}
});
sortedMap.putAll(notSortedMap);