Ответ
Название TreeSet отражает две ключевые характеристики этой коллекции:
- Tree — указывает на внутреннюю структуру данных: самобалансирующееся бинарное дерево поиска (обычно красно-черное дерево).
- Set — указывает на интерфейс: коллекция, которая не допускает дубликатов элементов.
Свойства TreeSet, вытекающие из структуры "дерева":
- Автоматическая сортировка. Элементы хранятся в отсортированном порядке согласно их natural ordering (например, для чисел — по возрастанию) или согласно предоставленному
Comparator. - Логарифмическая сложность операций. Основные операции (
add(),remove(),contains()) выполняются за время O(log n), где n — количество элементов. - Упорядоченный обход. Предоставляет эффективные методы для навигации:
first(),last(),higher(),lower(),subSet().
Пример, демонстрирующий сортировку:
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(5);
numbers.add(1);
numbers.add(3);
System.out.println(numbers); // [1, 3, 5] - вывод отсортирован
// Использование компаратора для обратной сортировки
TreeSet<Integer> reversedSet = new TreeSet<>(Comparator.reverseOrder());
reversedSet.addAll(numbers);
System.out.println(reversedSet); // [5, 3, 1]
Таким образом, TreeSet — это упорядоченное множество на основе дерева.