treeset java tutorial with programming examples
Овај водич објашњава све о класи ТрееСет, имплементацији, итерацији, ТрееСет Вс ХасхСет, примерима Јава ТрееСет итд.
ТрееСет у Јави имплементира Сет интерфејс (тачније СортедСет). ТрееСет интерно користи ТрееМап за чување података. Подразумевано се објекти или елементи ТрееСет-а чувају према природном редоследу у растућем редоследу.
Класа ТрееСет која имплементира ТрееСет у Јави имплементира интерфејс ‘НавигаблеСет’ и такође наслеђује класу АбстрацтСет.
=> Овде погледајте како бисте овде видели А-З Јава Водича за обуку.
Шта ћете научити:
ТрееСет у Јави
Имајте на уму да се елементи ТрееСет могу такође изричито наручити пружањем прилагођеног упоређивача у време креирања објекта ТрееСет користећи специфични прототип конструктора.
Доље су дате неке од важних карактеристика ТрееСет-а:
- Класа ТрееСет имплементира СортедСет интерфејс. Не дозвољава дуплиране елементе.
- Класа ТрееСет није синхронизована.
- ТрееСет не чува редослед уметања, али елементи у ТрееСету су сортирани према природном редоследу.
- ТрееСет се може наручити коришћењем прилагођеног упоређивача приликом креирања ТрееСет објекта.
- ТрееСет се обично користи за чување огромних количина информација које се природно сортирају. Ово помаже у лаком и бржем приступу.
Декларација класе ТрееСет
Јава нуди класу названу „ТрееСет“ која садржи функционалност структуре података ТрееСет. Класа ТрееСет је део пакета јава.утил.
Да бисмо у програм Јава укључили класу ТрееСет, требали бисмо користити изјаву о увозу како је дато у наставку:
import java.util.TreeSet;
или
import java.util.*;
Општа декларација класе ТрееСет је:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Као што се види из декларације класе, класа ТрееСет проширује АбстрацтСет и имплементира интерфејсе НавигаблеСет, Цлонеабле и Сериализабле.
Хијерархија класе за класу ТрееСет дата је у наставку:
Интерна примена
Знамо да ТрееСет имплементира НавигаблеСет интерфејс и проширује класу СортедСет.
Интерно је конструктор ТрееСет дефинисан на следећи начин:
public TreeSet() { this(new TreeMap()); }
Као што се види у горњој дефиницији конструктора ТрееСет-а, позива се ТрееМап објект. Дакле, интерно је то ТрееМап објект који је имплементиран за ТрееСет. Стога се приликом додавања елемента у ТрееСет на ТрееМап додаје кључ у којем су кључеви подразумевано сортирани.
По Орацле документација о ТрееСет-у ,
„ТрееСет је НавигаблеСет имплементација заснована на ТрееМап-у.“
Пример Јава ТрееСет-а
Следећи Јава програм приказује једноставан пример који демонстрира ТрееСет. У овом програму смо дефинисали једноставан Сет стабала боја. Додамо јој елементе, а затим га прикажемо. Имајте на уму да су елементи приказани према природном редоследу.
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() + ' '); } } }
Излаз:
Садржај ТрееСет-а:
Плава Зелена Црвена Жута
Понављајте кроз ТрееСет
Да бисмо приступили појединачним елементима ТрееСет-а, морамо да прелиставамо ТрееСет или другим речима, прелазимо кроз ТрееСет.
То радимо тако што декларирамо Итератор за ТрееСет, а затим користимо овај Итератор за приступ сваком елементу. За ово користимо методу нект () итератора који враћа следећи елемент у ТрееСет-у.
Следећи Јава програм демонстрира употребу Итератора за итерацију кроз ТрееСет.
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(', '); } } }
Излаз:
ТрееСет: [5, 10, 15, 20, 25]
ТрееСет користећи Итератор: 5, 10, 15, 20, 25,
како покренути јар датотеке на Виндовсима
Компаратор ТрееСет у Јави
Подразумевано је ТрееСет природно уређен. Такође можемо сортирати ТрееСет по прилагођеном редоследу дефинисањем нове класе упоређивача. У овој упоредној класи морамо да заменимо методу „упоређивање“ да бисмо сортирали елементе ТрееСет-а. Овај објект упоређивања се затим преноси конструктору ТрееСет.
Следећи Јава програм приказује употребу упоређивача за сортирање ТрееСет-а.
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; } } } }
Излаз:
Комплет стабала: [Пуне, Индоре, Хидерабад, Бангалуру]
Горњи програм имплементира класу Цомпаратор за сортирање датог ТрееСет-а по абецеди у обрнутом редоследу.
Препоручено читање = >> Јава Цомпаратор Интерфаце
ТрееСет АПИ / методе и конструктори
У овом одељку ћемо разговарати о АПИ-ју класе ТрееСет. Овде ћемо разговарати о конструкторима и методама које нуди класа ТрееСет.
Класа ТрееСет пружа преоптерећене конструкторе за конструкцију објекта ТрееСет.
Ове конструкторе табелирали смо на следећи начин:
Конструктори
Прототип конструктора | Опис | |
---|---|---|
садржи | боолеан садржи (објекат о) | Проверава да ли ТрееСет садржи дати елемент; тачно ако је присутно. |
ТрееСет () | Подразумевани конструктор за стварање новог, празног ТрееСет објекта. | |
ТрееСет (Колекција ц) | Ствара нови ТрееСет објекат који садржи елементе из дате колекције ц, сортиране према природном редоследу. | |
ТрееСет (Упоредни компаратор) | Конструише нови ТрееСет објекат који је празан и сортират ће се према наведеном упоређивачу. | |
ТрееСет (СортедСет с) | Ствара нови објект ТрееСет који садржи елементе из заданих сортедСет с. |
Методе
Даље, хајде да табуларизујемо разне методе које нуди класа ТрееСет.
Метод | Прототип методе | Опис |
---|---|---|
додати | логички додатак (Е е) | Додаје дати елемент у ТрееСет ако већ није тамо. |
аддАлл | боолеан аддАлл (Колекција ц) | У скуп додаје све елементе у датој колекцији ц. |
плафон | Е плафон (Е е) | Враћа елемент већи од или једнак е (најмањи елемент); или нулл ако није присутан ниједан елемент. |
јасно | воид цлеар () | Брише све елементе из ТрееСет-а. |
клон | Клон објекта () | Враћа плитку копију ТрееСет објекта. |
упоређивач | Компаратор упоређивач () | Враћа упоређивач за ТрееСет или нулл ако се користи природни поредак. |
силазниИтератор | Итератор силазноИтератор () | Приказује силазни итератор преко елемената у ТрееСет-у. |
десцендингСет | НавигаблеСет десцендингСет () | Даје приказ елемената у ТрееСет-у обрнутим редоследом. |
први | Прво Е () | Приказује први или најнижи елемент у ТрееСет-у. |
под | Е спрат (Е е) | Враћа елемент који је мањи или једнак датом елементу е у ТрееСет-у. Враћа нулу ако нема таквог елемента. |
хеадСет | СортедСет хеадСет (Е тоЕлемент) | враћа скуп елемената који су строго мањи од датог тоЕлемент |
НавигаблеСет хеадСет (Е тоЕлемент, укључујући логичку вредност) | Враћа скуп елемената који су једнаки (ако укључује = тачно) или мањи од датог елементуЕлемент. | |
више | Е виши (Е е) | Приказује најмањи елемент у овом скупу строго већи од датог елемента или нулл ако тог елемента нема. |
Празно | боолеан исЕмпти () | Проверава да ли је ТрееСет празан. Враћа труе ако је празно. |
итератор | Итератор итератор () | Враћа итератор (у растућем редоследу) за ТрееСет. |
последњи | Е последња () | Приказује највиши или последњи елемент у ТрееСет-у. |
ниже | Е ниже (Е е) | Враћа елемент (највећи елемент) који је строго мањи од датог елемента е у ТрееСет-у. |
поллФирст | Прва анкета () | Уклања и враћа први (најнижи) елемент у скупу; нулл ако је скуп празан. |
поллЛаст | Е анкетаПоследња () | Уклања и враћа последњи (највећи) елемент у скупу; нулл ако је постављено празно. |
уклонити | логичко уклањање (објекат о) | Уклања дати елемент из скупа. |
величина | инт величина () | Враћа величину или број елемената присутних у ТрееСет-у. |
подсет | НавигаблеСет подскуп (Е фромЕлемент, боолеан фромИнцлусиве, Е тоЕлемент, боолеан тоИнцлусиве) | Враћа приказ елемената у распону од Елемента до Елемента. |
Сортирани сет подскупа (Е одЕлемент, Е доЕлемент) | Враћа елементе приказа у распону од Елемента (укључујући) до Елемента Елемента (ексклузивно). | |
таилСет | СортедСет таилСет (Е фромЕлемент) | Враћа приказ који садржи елементе који су већи или једнаки датом изЕлемент. |
НавигаблеСет таилСет (Е одЕлемент, укључујући логичку вредност) | Враћа приказ елемената који су једнаки (ако је инклузивно тачно) или већи од фромЕлемент. |
ТрееСет у Јави 8
Имајте на уму да за ТрееСет нема већих промена у верзији Јава 8. Све методе и конструктори раде у Јави 8 и новијим верзијама.
Имплементација ТрееСет-а у Јави
Следећи Јава програм имплементира већину горе поменутих метода ТрееСет.
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
ТрееСет садржи (15): тачно
Величина сета дрвећа: 5
ТрееСет Први елемент: 10
ТрееСет Последњи елемент: 35
Елемент 30 уклоњен из ТрееСет-а
ТрееСет након уклањања (): 10 15 25 35
Величина ТрееСет-а након уклањања (): 4
Слушалице: [10, 15, 25]
Трее сет сизе афтер цлеар (): 0
У горњем програму дефинишемо ТрееСет објекат, а затим му додајемо елементе помоћу методе „додај“. Даље, дефинишемо АрраиЛист. Затим додајемо елементе АрраиЛист у ТрееСет помоћу методе ‘аддАлл’. Касније ћемо демонстрирати разне методе ТрееСет-а попут Итератор, плафон, под, први, последњи, садржи, величину, исЕмпти итд.
ТрееСет вс ХасхСет
Проверимо неке разлике између ТрееСет и ХасхСет.
ТрееСет | ХасхСет |
---|---|
Елементи су поредани према природном редоследу. | Елементи нису наручени. |
Потребно је О (лог Н) време за операције попут уметања, брисања и претраживања, што га чини споријим од ТрееСет-а. | Потребно је константно време за основне операције попут уметања, брисања и претраживања што га чини бржим од ТрееСет-а. |
Не дозвољава нулл објекте. | Омогућава нулти објекат. |
Користи методу цомпареТо () за упоређивање два објекта. | Користи методу цомпаре () и екуалс () за упоређивање два објекта. |
Интерно имплементирано помоћу Навигабле ТрееМап. | Интерно имплементирано помоћу ХасхМап-а. |
Има богату функционалност АПИ-ја који може изводити разне манипулације. | АПИ функционалности ХасхСет-а је прилично ограничен. |
Често постављана питања
П # 1) Шта је ТрееСет?
Одговор: ТрееСет је имплементација СортедСет која не дозвољава двоструке вредности. Елементи у ТрееСет-у се подразумевано сортирају у растућем редоследу.
К # 2) Како се Јава додају елементи у ТрееСет?
Одговор: Класа ТрееСет пружа методу додавања која се користи за додавање одређеног елемента у ТрееСет. Такође пружа метод „аддАлл“. Ова метода прихвата било коју другу колекцију као аргумент, а затим додаје све елементе ове колекције у ТрееСет.
К # 3) Да ли је ТрееСет заштићен нити?
Одговор: Не. ТрееСет није заштићен нити. Стога бисмо требали водити рачуна о томе како управљамо ТрееСет-ом у окружењу са више нити.
К # 4) Може ли ТрееСет имати дупликате?
Одговор: Не. ТрееСет не дозвољава дупликате.
К # 5)Да ли ТрееСет дозвољава нулу у Јави?
Одговор: Да. У ТрееСету можемо имати нулл елементе.
Закључак
Овим је завршен наш водич о ТрееСет-у. ТрееСет је имплементација СортедСет која не дозвољава дупликате, али дозвољава нулл вредности. Елементи у ТрееСет-у су подразумевано сортирани према природном редоследу у растућем редоследу.
Видели смо основе класе ТрееСет заједно са њеном декларацијом и разним конструкторима и методама.
У нашим следећим водичима разговарамо о преосталим часовима Јава колекције.
=> Овде припазите на једноставну серију Јава тренинга.
Препоручено читање
- Бинарно стабло претраживања у Јави - примери примене и кода
- ТрееМап у Јави - Водич за примере Јава ТрееМап
- Шта је Јава Вецтор | Водич за Јава векторску класу са примерима
- Водич за класу Јава Сцаннер са примерима
- Јава Арраи Цласс Туториал - јава.утил.Арраис Цласс са примерима
- Водич за ЈАВА за почетнике: 100+ практичних Јава видео водича
- Јава Стринг садржи () Водич за методе са примерима
- Назубљени низ у Јави - Водич са примерима