treeset java tutorial with programming examples
Този урок обяснява всичко за клас TreeSet, внедряване, итерация, TreeSet Vs HashSet, Java TreeSet Примери и т.н .:
TreeSet в Java реализира интерфейса Set (по-точно SortedSet). TreeSet използва TreeMap вътрешно за съхраняване на данни. По подразбиране обектите или елементите на TreeSet се съхраняват според естествения ред във възходящ ред.
Класът TreeSet, който реализира TreeSet в Java, реализира интерфейса ‘NavigableSet’ и също наследява класа AbstractSet.
=> Проверете тук, за да видите A-Z на уроците за обучение по Java тук.
Какво ще научите:
TreeSet в Java
Обърнете внимание, че TreeSet елементите също могат да бъдат изрично подредени чрез предоставяне на персонализиран Comparator по време на създаването на TreeSet обект, използвайки конкретния прототип на конструктора.
По-долу са дадени някои от важните характеристики на TreeSet:
- Класът TreeSet реализира интерфейса SortedSet. Не позволява дублиращи се елементи.
- Класът TreeSet не е синхронизиран.
- TreeSet не запазва реда за вмъкване, но елементите в TreeSet са сортирани според естественото подреждане.
- TreeSet може да бъде поръчан чрез използване на персонализиран сравнителен инструмент, докато се създава TreeSet обект.
- TreeSet обикновено се използва за съхраняване на огромни количества информация, която е естествено сортирана. Това спомага за лесен и бърз достъп.
Декларация за клас TreeSet
Java предоставя клас, наречен „TreeSet“, който съдържа функционалността на структурата от данни на TreeSet. Класът TreeSet е част от пакета java.util.
За да включим клас TreeSet в програмата Java, трябва да използваме инструкцията за импортиране, както е дадено по-долу:
import java.util.TreeSet;
или
import java.util.*;
Обща декларация на клас TreeSet е:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Както се вижда от декларацията на класа, класът TreeSet разширява AbstractSet и прилага интерфейси NavigableSet, Cloneable и Serializable.
Йерархия на класа за клас TreeSet е дадена по-долу:
Вътрешно изпълнение
Знаем, че TreeSet реализира интерфейса NavigableSet и разширява класа SortedSet.
Вътрешно конструкторът TreeSet се дефинира, както следва:
public TreeSet() { this(new TreeMap()); }
Както се вижда в горната дефиниция на конструктора на TreeSet, се извиква обект TreeMap. По този начин вътрешно, това е TreeMap обект, който е реализиран за TreeSet. Следователно, докато се добавя елемент към TreeSet, към TreeMap се добавя ключ, в който ключовете са сортирани по подразбиране.
Според Документация на Oracle за TreeSet ,
„TreeSet е реализация на NavigableSet, базирана на TreeMap.“
Пример за Java TreeSet
Следващата програма Java показва прост пример, който демонстрира TreeSet. В тази програма дефинирахме прост Color TreeSet. Добавяме елементи към него и след това го показваме. Имайте предвид, че елементите се показват според естественото подреждане.
import java.util.*; class Main{ public static void main(String args()){ //Create and add elements to TreeSet TreeSet color_TreeSet=new TreeSet(); color_TreeSet.add('Red'); color_TreeSet.add('Green'); color_TreeSet.add('Blue'); color_TreeSet.add('Yellow'); //Traverse the TreeSet and print elements one by one System.out.println('TreeSet Contents:'); Iterator iter=color_TreeSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
Изход:
Съдържание на TreeSet:
Синьо Зелено Червено Жълто
Итерация чрез TreeSet
За да осъществим достъп до отделните елементи на TreeSet, трябва да итерираме през TreeSet или с други думи, да преминем през TreeSet.
Правим това, като декларираме итератор за TreeSet и след това използваме този итератор за достъп до всеки елемент. За това използваме метода next () на итератор, който връща следващия елемент в TreeSet.
Следващата Java програма демонстрира използването на Iterator за итерация през TreeSet.
import java.util.TreeSet; import java.util.Iterator; class Main { public static void main(String() args) { //create and initialize TreeSet TreeSet num_Treeset = new TreeSet(); num_Treeset.add(20); num_Treeset.add(5); num_Treeset.add(15); num_Treeset.add(25); num_Treeset.add(10); System.out.println('TreeSet: ' + num_Treeset); // Call iterator() method to define Iterator for TreeSet Iterator iter_set = num_Treeset.iterator(); System.out.print('TreeSet using Iterator: '); // Access TreeSet elements using Iterator while(iter_set.hasNext()) { System.out.print(iter_set.next()); System.out.print(', '); } } }
Изход:
TreeSet: (5, 10, 15, 20, 25)
TreeSet с помощта на Iterator: 5, 10, 15, 20, 25,
софтуерни тестове резюме проби 2 години опит
TreeSet Comparator в Java
По подразбиране TreeSet е естествено подреден. Също така можем да сортираме TreeSet в персонализиран ред, като дефинираме нов клас за сравнение. В този клас за сравнение трябва да заменим метода ‘compare’, за да сортираме елементите на TreeSet. След това този обект за сравнение се предава на конструктора TreeSet.
Следващата програма на Java показва използването на Comparator за сортиране на TreeSet.
import java.util.TreeSet; import java.util.Comparator; class Main { public static void main(String() args) { // Create a TreeSet with user-defined comparator TreeSet cities = new TreeSet(new cities_Comparator()); //add elements to the comparator cities.add('Pune'); cities.add('Hyderabad'); cities.add('Indore'); cities.add('Bangaluru'); //print the contents of TreeSet System.out.println('TreeSet: ' + cities); } // Create a comparator class public static class cities_Comparator implements Comparator { //override compare method to compare two elements of the TreeSet @Override public int compare(String cities_one, String cities_two) { int value = cities_one.compareTo(cities_two); // sort elements in reverse order if (value > 0) { return -1; } else if (value <0) { return 1; } else { return 0; } } } }
Изход:
TreeSet: (Пуна, Индаур, Хайдерабад, Бангалур)
Горната програма реализира клас Comparator за сортиране на дадения TreeSet по азбучен ред в обратен ред.
Препоръчително четене = >> Java сравнителен интерфейс
API / методи и конструктори на TreeSet
В този раздел ще обсъдим API на класа TreeSet. Тук ще обсъдим конструкторите и методите, предоставени от класа TreeSet.
Класът TreeSet осигурява претоварени конструктори за конструиране на TreeSet обект.
Табулирали сме тези конструктори по следния начин:
Конструктори
Прототип на конструктора | Описание | |
---|---|---|
съдържа | boolean съдържа (Обект o) | Проверява дали TreeSet съдържа даден елемент; вярно, ако присъства. |
TreeSet () | Конструктор по подразбиране за създаване на нов, празен TreeSet обект. | |
TreeSet (Колекция c) | Създава нов TreeSet обект, съдържащ елементите от дадена колекция c, сортирани според естественото подреждане. | |
TreeSet (Сравнителен компаратор) | Конструира нов обект TreeSet, който е празен и ще бъде сортиран според посочения компаратор. | |
TreeSet (SortedSet s) | Създава нов TreeSet обект, който съдържа елементи от дадени sortedSet s. |
Методи
След това нека да разделим различните методи, предоставени от класа TreeSet.
Метод | Прототип на метода | Описание |
---|---|---|
добавете | булево добавяне (E e) | Добавя даден елемент към TreeSet, ако вече не е там. |
добави Всички | boolean addAll (Колекция c) | Добавя всички елементи в дадената колекция c към набора. |
таван | E ceiling ( E e ) | Връща елемент, по-голям или равен на e (най-малък елемент); или null, ако няма елемент. |
ясно | празно ясно () | Изтрива всички елементи от TreeSet. |
клон | Клон на обект () | Връща плитко копие на TreeSet обект. |
компаратор | Сравнителен сравнител () | Връща компаратора за TreeSet или null, ако се използва естествено подреждане. |
низходящIterator | Итератор низходящ Итератор () | Връща низходящ итератор над елементите в TreeSet. |
низходящ Set | NavigableSet низходящ Set () | Връща изглед на елементи в TreeSet в обратен ред. |
първо | E първо () | Връща първия или най-ниския елемент в TreeSet. |
етаж | E floor ( E e ) | Връща елемента, който е по-малък или равен на дадения елемент e в TreeSet. Връща null, ако няма такъв елемент. |
headSet | SortedSet headSet (E toElement) | връща набор от елементи, които са строго по-малко от дадения toElement |
NavigableSet headSet (E toElement, булево включително) | Връща набор от елементи, които са равни на (ако включва = true) или по-малко от даденото наEEment. | |
по-висок | E по-високо (E e) | Връща най-малкия елемент в този набор, строго по-голям от дадения елемент, или null, ако няма такъв елемент. |
празно е | boolean isEmpty () | Проверява дали TreeSet е празен. Връща true, ако е празно. |
итератор | Итератор на итератор () | Връща итератор (във възходящ ред) за TreeSet. |
последен | E последно () | Връща най-високия или последния елемент в TreeSet. |
нисък | E по-ниско (E e) | Връща елемента (най-големия елемент), който е строго по-малък от дадения елемент e в TreeSet. |
анкета Първо | E pollFirst ( ) | Премахва и връща първия (най-ниския) елемент в набора; null, ако комплектът е празен. |
анкета Последно | E анкета Последно () | Премахва и връща последния (най-големия) елемент в набора; null, ако е зададено празно. |
Премахване | булево премахване (обект o) | Премахва дадения елемент от набора. |
размер | размер int () | Връща размера или броя на елементите, налични в TreeSet. |
subSet | Подмножество NavigableSet (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | Връща изглед на елементи, вариращи от отElement до toElement. |
SortedSet subSet (E fromElement, E toElement) | Връща елементи на изглед, вариращи отElement (включително) до toElement (изключителен). | |
tailSet | SortedSet tailSet (E fromElement) | Връща изглед, съдържащ елементи, които са по-големи или равни на даденото отElement. |
NavigableSet tailSet (E отElement, булево включително) | Връща изглед на елементите, равни на (ако включително е вярно) или по-големи от fromElement. |
TreeSet в Java 8
Моля, обърнете внимание, че за TreeSet няма значителни промени във версията на Java 8. Всички методи и конструктори работят в Java 8 и по-новите версии.
Внедряване на TreeSet в Java
Следващата програма Java изпълнява повечето от обсъдените по-горе методи TreeSet.
import java.util.Iterator; import java.util.TreeSet; import java.util.ArrayList; public class Main { public static void main(String() args) { //create a TreeSet of numbers TreeSet numSet = new TreeSet(); //add () method numSet.add(30); numSet.add(10); //declare and initialize an ArrayList ArrayList myList = new ArrayList(); myList.add(15); myList.add(25); myList.add(35); //addAll () method : add ArrayList elements to TreeSet numSet.addAll(myList); //define an iterator on TreeSet Iterator iterator = numSet.iterator(); System.out.print('Tree set contents: '); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //ceiling () System.out.println('ceiling(25):' + numSet.ceiling(25)); //floor () System.out.println('floor(25):' + numSet.floor(25)); //contains () System.out.println('TreeSet contains(15):' + numSet.contains(15)); // isEmpty () if (numSet.isEmpty()) System.out.print('Tree Set is empty.'); else System.out.println('Tree Set size: ' + numSet.size()); // first () System.out.println('TreeSet First element: ' + numSet.first()); // last () System.out.println('TreeSet Last element: ' + numSet.last()); // remove () if (numSet.remove(30)) System.out.println('Element 30 removed from TreeSet'); else System.out.println('Element 30 doesn't exist!'); System.out.print('TreeSet after remove (): '); iterator = numSet.iterator(); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //size () System.out.println('TreeSet size after remove (): ' + numSet.size()); //Headset () System.out.println('Headset : ' + numSet.headSet(35)); // clear () numSet.clear(); System.out.println('Tree Set size after clear (): ' + numSet.size()); } }
Изход:
Съдържание на дървесни набори: 10 15 25 30 35
таван (25): 25
етаж (25): 25
TreeSet съдържа (15): true
Размер на дървесен комплект: 5
TreeSet Първи елемент: 10
TreeSet Последен елемент: 35
Елемент 30 е премахнат от TreeSet
TreeSet след премахване (): 10 15 25 35
Размер на TreeSet след премахване (): 4
Слушалки: (10, 15, 25)
Дърво Задайте размер след изчистване (): 0
В горната програма дефинираме TreeSet обект и след това добавяме елементи към него, използвайки метода ‘add’. След това дефинираме ArrayList. След това добавяме елементи от ArrayList към TreeSet, използвайки метода ‘addAll’. По-късно демонстрираме различни методи на TreeSet като Iterator, таван, под, първи, последен, съдържа, размер, isEmpty и т.н.
TreeSet Vs HashSet
Нека проверим някои от разликите между TreeSet и HashSet.
TreeSet | HashSet |
---|---|
Елементите са подредени според естествената поръчка. | Елементите не са подредени. |
Отнема O (log N) време за операции като вмъкване, изтриване и търсене, като по този начин го прави по-бавен от TreeSet. | Отнема постоянно време за основни операции като вмъкване, изтриване и търсене, което го прави по-бързо от TreeSet. |
Не позволява нулеви обекти. | Позволява нулев обект. |
Използва метода compareTo () за сравняване на два обекта. | Използва метода compare () и equals () за сравняване на два обекта. |
Вътрешно реализиран с помощта на Navigable TreeMap. | Вътрешно внедрен с помощта на HashMap. |
Притежава API за богата функционалност, който може да извършва различни манипулации. | Функционалният API на HashSet е доста ограничен. |
често задавани въпроси
В # 1) Какво е TreeSet?
Отговор: TreeSet е изпълнение на SortedSet, което не позволява дублирани стойности. Елементите в TreeSet по подразбиране са сортирани във възходящ ред.
Q # 2) Как добавяте елементи към TreeSet в Java?
Отговор: Класът TreeSet предоставя метод за добавяне, който се използва за добавяне на определен елемент към TreeSet. Той също така предоставя метода ‘addAll’. Този метод приема всяка друга колекция като аргумент и след това добавя всички елементи от тази колекция към TreeSet.
Q # 3) TreeSet безопасно ли е с нишки?
Отговор: Не. TreeSet не е безопасен за нишки. По този начин трябва да се погрижим за това как работим с TreeSet в среда с много нишки.
Q # 4) Може ли TreeSet да има дубликати?
Отговор: Не. TreeSet не позволява дублирания.
Q # 5)TreeSet разрешава ли null в Java?
Отговор: Да. Можем да имаме нулеви елементи в TreeSet.
Заключение
Това завършва нашия урок за TreeSet. TreeSet е реализация на SortedSet, която не позволява дублирания, но позволява нулеви стойности. Елементите в TreeSet са по подразбиране сортирани според естественото подреждане във възходящ ред.
Видяхме основите на класа TreeSet заедно с неговата декларация и различни конструктори и методи.
В следващите ни уроци ние обсъждаме останалите класове за събиране на Java.
=> Внимавайте тук за простите учебни серии за Java.
Препоръчително четене
- Дърво на двоично търсене в Java - Примери за изпълнение и код
- TreeMap в Java - Урок с примери за TreeMap на Java
- Какво е Java Vector | Урок за Java Vector Class с примери
- Урок за клас Java Scanner с примери
- Java Array Class Tutorial - java.util.Arrays Class с примери
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Java String съдържа () Урок за метод с примери
- Назъбен масив в Java - урок с примери