GrabDuck

Класс TreeSet | Java

:

Последнее обновление: 30.10.2015

Обобщенный класс TreeSet<E> представляет структуру данных в виде дерева, в котором все объекты хранятся в отсортированном виде по возрастанию. TreeSet является наследником класса AbstractSet и реализует интерфейс NavigableSet.

В классе TreeSet определены следующие конструкторы:

  • TreeSet(): создает пустое дерево

  • TreeSet(Collection<? extends E> col): создает дерево, в которое добавляет все элементы коллекции col

  • TreeSet(SortedSet <E> set): создает дерево, в которое добавляет все элементы сортированного набора set

  • TreeSet(Comparator<? super E> comparator): создает пустое дерево, где все добавляемые элементы впоследствии будут отсортированы компаратором.

TreeSet поддерживает все стандартные методы для вставки и удаления элементов:

import java.util.TreeSet;

public class CollectionApp {

    public static void main(String[] args) {
        
        TreeSet<String> states = new TreeSet<String>();
        
        // добавим в список ряд элементов
        states.add("Германия");
        states.add("Франция");
        states.add("Италия");
        states.add("Великобритания");
      
        System.out.printf("В списке %d элементов \n", states.size());
        
        states.remove("Германия");
        for(String state : states){
        
            System.out.println(state);
        }
    }
}

И поскольку при вставке объекты сразу же сортируются по возрастанию, то при выводе в цикле for мы получим отсортированный набор:

Великобритания
Италия
Франция

Так как TreeSet реализует интерфейс NavigableSet, а через него и SortedSet, то мы можем применить к структуре дерева различные методы:

import java.util.*;

public class CollectionApp {

    public static void main(String[] args) {
        
        TreeSet<String> states = new TreeSet<String>();
        
        states.add("Германия");
        states.add("Франция");
        states.add("Италия");
        states.add("Великобритания");
        System.out.println(states.first()); // получим первый - самый меньший элемент
		System.out.println(states.last()); // получим последний - самый больший элемент
		// получим поднабор от одного элемента до другого
		SortedSet<String> set = states.subSet("Германия", "Франция");
		System.out.println(set);
		// элемент из набора, который больше текущего
		String greater = states.higher("Германия");
		// элемент из набора, который больше текущего
		String lower = states.lower("Германия");
		// возвращаем набор в обратном порядке
		NavigableSet<String> navSet = states.descendingSet();
		// возвращаем набор в котором все элементы меньше текущего
		SortedSet<String> setLower=states.headSet("Германия");
		// возвращаем набор в котором все элементы больше текущего
		SortedSet<String> setGreater=states.tailSet("Германия");   
    }
}