Интерфейс SortedSet описывает множество, элементы которого могут быть упорядочены по некоторому принципу, например в соответствии с естественным порядком его элементов. Элементы множества не проиндексированы, но существует понятие большего и меньшего элемента.
first() и last() возвращают первый и последний элементы множества.
subSet(Object fromElement, Object toElement) возвращает подмножество упорядоченного множества, содержащее элементы, большие fromElement (включая его самого) и меньше toElement. У этого метода есть две простые разновидности headSet(Object toElement) и tailSet(Object fromElement), возвращающие подмножество, состоящее из всех элементов, меньших и больших данного соответственно.
Способ упорядочения элементов описывает интерфейс Comparator. Он имеет два метода: compare(Object obj1, Object obj2) – возвращает отрицательное число, если obj1 считается меньшим obj2, ноль, если они равны и положительное число, если obj1 больше obj2.
equals(Object obj1, Object obj2) – возвращает true, если объекты считаются равными
Можно создать свой собственный способ сравнения элементов, написав класс, реализующий интерфейс Comparator и переопределив методы compare() и equals(). Класс TreeSet, например, имеет конструктор с параметром типа Comparator, в который можно передать объект этого нового класса. В результате элементы множества будут отсортированы угодным нам способом.