1358. Kласс TreeSet (красно-чёрное дерево)
Класс TreeSet в Java представляет собой реализацию структуры данных "красно-чёрное дерево". Он является подклассом класса AbstractSet и реализует интерфейсы NavigableSet и SortedSet.
Особенности класса TreeSet:
Элементы в TreeSet хранятся в отсортированном порядке. TreeSet не допускает наличие дублирующихся элементов. Вставка, удаление и поиск элементов в TreeSet выполняются за время O(log n), где n - количество элементов в множестве. TreeSet не является потокобезопасным, поэтому при необходимости использования в многопоточной среде следует использовать синхронизацию.
Пример использования класса TreeSet:
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
TreeSet<Integer> treeSet = new TreeSet<>();
// Добавление элементов в TreeSet treeSet.add(5);
treeSet.add(2);
treeSet.add(8);
treeSet.add(1);
treeSet.add(4);
// Вывод элементов TreeSet в отсортированном порядке
for (Integer element : treeSet) {
System.out.println(element);
}
// Удаление элемента из TreeSet
treeSet.remove(2);
// Проверка наличия элемента в TreeSet
boolean contains = treeSet.contains(4);
System.out.println("Contains 4: " + contains);
// Получение наименьшего элемента в TreeSet
Integer minElement = treeSet.first();
System.out.println("Min element: " + minElement);
// Получение наибольшего элемента в TreeSet
Integer maxElement = treeSet.last();
System.out.println("Max element: " + maxElement);
}
}
В данном примере создается объект TreeSet, в который добавляются несколько элементов. Затем элементы выводятся на экран в отсортированном порядке. Далее производится удаление элемента, проверка наличия элемента и получение наименьшего и наибольшего элементов в TreeSet.
Класс TreeSet предоставляет также другие методы для работы с элементами, такие как ceiling(), floor(), higher(), lower() и др., которые позволяют выполнять различные операции над элементами в TreeSet.
Важно отметить, что в Java также существует класс HashSet, который представляет собой реализацию структуры данных "хэш-таблица". Оба класса (TreeSet и HashSet) предоставляют схожий функционал, но имеют различные особенности и применяются в разных ситуациях.