Интерфейс SortedSet и класс TreeSet
1. Интерфейс SortedSet
Интерфейс SortedSet языка Java, расширяющий интерфейс Set, описывает упорядоченное множество, отсортированное в возрастающем порядке или по порядку, заданному реализацией интерфейса Comparator.
Методы интерфейса SortedSet:
Comparator<? super E> comparator()
- возвращает компаратор сортированного множества. Если для множества применяется естественный порядок сортировки, возвращаетсяnull
.E first()
- возвращает первый элемент вызывающего сортированного множества.E last()
- возвращает последний элемент вызывающего сортированного множества.SortedSet headSet(E toElement)
- возвращаетSortedSet
, содержащий элементы из вызывающего множества, которые предшествуютend
.SortedSet subSet(E fromElement, E toElement)
- возвращаетSortedSet
, содержащий элементы из вызывающего множества, находящиеся междуstart
иend-1
.SortedSet tailSet(E fromElement)
- возвращаетSortedSet
, содержащий элементы из вызывающего множества, которые следуют заend
.
Рассмотрим пример использования методов subSet()
, headSet()
, tailSet()
, first()
, last()
:
import java.util.SortedSet;
import java.util.TreeSet;
public class TreeSetExample2 {
public static void main(String[] args) {
SortedSet<String> set = new TreeSet<>();
set.add("Харьков");
set.add("Киев");
set.add("Львов");
set.add("Кременчуг");
set.add("Харьков");
System.out.println(set);
SortedSet<String> subSet = set.subSet("Киев", "Львов");
System.out.println("SubSet: " + subSet);
System.out.println("HeadSet: " + set.headSet("Львов"));
System.out.println("TailSet: " + set.tailSet("Львов"));
System.out.println("Первый элемент: " + set.first());
System.out.println("Последний элемент: " + set.last());
}
}
Результат выполнения программы:
[Киев, Кременчуг, Львов, Харьков]
SubSet: [Киев, Кременчуг]
HeadSet: [Киев, Кременчуг]
TailSet: [Львов, Харьков]
Первый элемент: Киев
Последний элемент: Харьков
2. Класс TreeSet
Класс TreeSet
реализует интерфейс NavigableSet, который поддерживает элементы в отсортированном по возрастанию порядке. Объекты сохраняются в отсортированном порядке по возрастанию.
Обработка операций удаления и вставки объектов происходит медленнее O(log (n)), чем в хэш-множествах, но быстрее, чем в списках.
Рассмотрим пример использование класса TreeSet
:
import java.util.SortedSet;
import java.util.TreeSet;
public class TreeSetExample1 {
public static void main(String[] args) {
SortedSet<String> set = new TreeSet<>();
set.add("Харьков");
set.add("Киев");
set.add("Львов");
set.add("Кременчуг");
set.add("Харьков");
System.out.println(set);
}
}
Обратите внимание, что элементы были добавлены в одном порядке, но при выводе на консоль, мы видим, что элементы отсортированы:
[Киев, Кременчуг, Львов, Харьков]
Конструкторы класса TreeSet
:
TreeSet()
TreeSet(Collection<? extends Е> сollection)
TreeSet(Comparator<? super Е> соmрarator)
TreeSet(SortedSet<E> sortedSet)
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.