Упорядоченные множества
Класс TreeSet полностью реализует интерфейс sortedset и итератор типа iterator. Класс TreeSet реализован как бинарное дерево поиска, значит, его элементы хранятся в упорядоченном виде. Это значительно ускоряет поиск нужного элемента.
Порядок задается либо естественным следованием элементов, либо объектом, реализующим интерфейс сравнения Comparator.
Этот класс удобен при поиске элемента во множестве, например, для проверки, обладает ли какой-либо элемент свойством, определяющим множество.
В классе TreeSet четыре конструктора:
TreeSet () — создает пустой объект с естественным порядком элементов;
TreeSet (Comparator с) — создает пустой объект, в котором порядок задается объектом сравнения с;
TreeSet (Collection coll) — создает объект, содержащий все элементы коллекции coll, с естественным порядком ее элементов;
TreeSet (SortedMap sf) — создает объект, содержащий все элементы отображения sf, в том же порядке.
В листинге 6.7 показано, как можно хранить комплексные числа в упорядоченном виде. Порядок задается объектом класса ComplexCompare, определенного в листинге 6.6.
Листинг 6.7. Хранение комплексных чисел в упорядоченном виде
TreeSet ts = new TreeSet (new ComptexCompare());
ts.add(new Complex(1.2, 3.4));
ts. add (new Complex (-1.25, 33.4»;
ts.add(new Complex(1.23, -3.45));
ts.add(new Complex(16.2, 23.4));
Iterator it = ts.iterator();
while(it.hasNext()) , ((Complex)it.next()).pr();