TreeSet
Множество, которое хранит элементы в отсортированном порядке.
Доступно с: Java 1.2
Синтаксис
public class TreeSet<E> implements NavigableSet<E>Примеры
Элементы всегда отсортированы:
void main() {
Set<Integer> scores = new TreeSet<>(List.of(42, 7, 19, 7, 88));
IO.println(scores);
}Результат:
[7, 19, 42, 88]Навигация: ближайшие значения и диапазоны:
void main() {
TreeSet<Integer> set = new TreeSet<>(List.of(10, 20, 30, 40));
IO.println(set.first() + " " + set.last());
IO.println(set.ceiling(25));
IO.println(set.floor(25));
IO.println(set.headSet(30));
}Результат:
10 40
30
20
[10, 20]Примечания
Операции выполняются за логарифмическое время — медленнее HashSet, но порядок всегда отсортирован. Элементы должны реализовывать Comparable, либо в конструктор передаётся Comparator: new TreeSet<>(Comparator.reverseOrder()). Элементы, которые компаратор считает равными, считаются повтором.
См. также
- HashSet — Множество без повторов на основе хеш-таблицы; порядок не гарантирован.
- LinkedHashSet — Множество, которое помнит порядок добавления элементов.
- TreeMap — Словарь, ключи которого всегда отсортированы.
- Comparator.comparing() — Создаёт компаратор, который сравнивает объекты по одному полю.
Вопросы и ответы по теме
В учебнике
- Множества: Set — Множества в Java: HashSet без повторов, LinkedHashSet и TreeSet с порядком, объединение и пересечение множеств.