Интерфейс SortedSet и класс TreeSet

Author: Tatyana Milkina

1. Интерфейс SortedSet

Интерфейс SortedSet языка Java, расширяющий интерфейс Set, описывает упорядоченное множество, отсортированное в возрастающем порядке или по порядку, заданному реализацией интерфейса Comparator.

Методы интерфейса SortedSet:

  1. Comparator<? super E> comparator() - возвращает компаратор сортированного множества. Если для множества применяется естественный порядок сортировки, возвращается null.
  2. E first() - возвращает первый элемент вызывающего сортированного множества.
  3. E last() - возвращает последний элемент вызывающего сортированного множества.
  4. SortedSet headSet(E toElement)- возвращает SortedSetсодержащий элементы из вызывающего множества, которые предшествуют end.
  5. SortedSet subSet(E fromElement, E toElement) - возвращает SortedSetсодержащий элементы из вызывающего множества, находящиеся между start и end-1.
  6. 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) 
Читайте также:
Комментарии