logo

Јава ТрееСет класа

ТрееСет хијерархија класа

Јава ТрееСет класа имплементира Сет интерфејс који користи стабло за складиштење. Он наслеђује класу АбстрацтСет и имплементира интерфејс НавигаблеСет. Објекти класе ТрееСет се чувају у растућем редоследу.

Важне тачке о класи Јава ТрееСет су:

  • Јава ТрееСет класа садржи јединствене елементе само као што је ХасхСет.
  • Јава ТрееСет класа приступа и времена преузимања је тихо брзо.
  • Јава ТрееСет класа не дозвољава нулл елемент.
  • Јава ТрееСет класа није синхронизована.
  • Јава ТрееСет класа одржава растући редослед.
  • Јава ТрееСет класа садржи јединствене елементе само као што је ХасхСет.
  • Јава ТрееСет класа приступа и времена преузимања су прилично брзи.
  • Јава ТрееСет класа не дозвољава нулте елементе.
  • Јава ТрееСет класа није синхронизована.
  • Јава ТрееСет класа одржава растући редослед.
  • ТрееСет може дозволити само оне генеричке типове који су упоредиви. На пример, Цомпарабле интерфејс имплементира класа СтрингБуффер.

Интерни рад класе ТрееСет

ТрееСет се имплементира помоћу бинарног стабла претраге, које се самобалансира баш као црвено-црно дрво. Стога, операције као што су претрага, уклањање и додавање троше О(лог(Н)) времена. Разлог за ово је у самобалансирајућем стаблу. Он је ту да осигура да висина стабла никада не прелази О(лог(Н)) за све наведене операције. Због тога је то једна од ефикасних структура података за чување великих података који су сортирани и за обављање операција на њима.

Синхронизација класе ТрееСет

Као што је већ поменуто, класа ТрееСет није синхронизована. То значи да ако више од једне нити истовремено приступа скупу стабла, а једна од нити приступа га модификује, онда се синхронизација мора обавити ручно. Обично се ради тако што се изврши нека синхронизација објеката која инкапсулира скуп. Међутим, у случају када такав објекат није пронађен, онда се скуп мора умотати уз помоћ методе Цоллецтионс.синцхронизедСет(). Саветује се да користите метод током времена креирања како бисте избегли несинхронизован приступ скупу. Следећи исечак кода показује исто.

 TreeSet treeSet = new TreeSet(); Set syncrSet = Collections.synchronziedSet(treeSet); 

Хијерархија класе ТрееСет

Као што је приказано на горњем дијаграму, класа Јава ТрееСет имплементира интерфејс НавигаблеСет. Интерфејс НавигаблеСет проширује интерфејсе СортедСет, Сет, Цоллецтион и Итерабле у хијерархијском редоследу.

јс онлоад

Декларација класе ТрееСет

Хајде да видимо декларацију за класу јава.утил.ТрееСет.

која је величина екрана мог монитора
 public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable 

Конструктори Јава ТрееСет класе

Цонструцтор Опис
ТрееСет() Користи се за конструисање празног скупа стабала који ће бити сортиран у растућем редоследу према природном редоследу скупа стабала.
ТрееСет (колекција ц) Користи се за изградњу новог скупа стабла који садржи елементе колекције ц.
ТрееСет (компаратор компаратор) Користи се за конструисање празног скупа стабла које ће бити сортирано према датом компаратору.
ТрееСет(СортедСет с) Користи се за изградњу ТрееСет-а који садржи елементе датог СортедСет-а.

Методе класе Јава ТрееСет

Метод Опис
боолеан адд(Е е) Користи се за додавање наведеног елемента овом скупу ако већ није присутан.
логички аддАлл (колекција ц) Користи се за додавање свих елемената наведене колекције у овај скуп.
Е плафон (Е е) Враћа једнак или најближи највећи елемент наведеног елемента из скупа, или нулл не постоји такав елемент.
Цомпаратор цомпаратор() Враћа компаратор који распоређује елементе по редоследу.
Итератор десцендингИтератор() Користи се за понављање елемената у опадајућем редоследу.
НавигаблеСет десцендингСет() Враћа елементе обрнутим редоследом.
Е спрат (Е е) Враћа једнак или најближи најмањи елемент наведеног елемента из скупа, или нулл не постоји такав елемент.
СортедСет хеадСет (Е тоЕлемент) Враћа групу елемената који су мањи од наведеног елемента.
НавигаблеСет хеадСет (Е доЕлемент, укључујући логички) Враћа групу елемената који су мањи или једнаки (ако је укључено тачно) наведеном елементу.
Е више (Е е) Враћа најближи највећи елемент наведеног елемента из скупа, или нулл не постоји такав елемент.
Итератор итератор() Користи се за понављање елемената у растућем редоследу.
Е ниже (Е е) Враћа најближи најмањи елемент наведеног елемента из скупа, или нулл не постоји такав елемент.
Е анкетаФирст() Користи се за преузимање и уклањање најнижег (првог) елемента.
Е анкетаПоследња() Користи се за преузимање и уклањање највишег (последњег) елемента.
Сплитератор сплитератор() Користи се за креирање касно-везујућег и брзог сплитератора преко елемената.
Подскуп НавигаблеСет(Е одЕлемента, логички од Инклузивног, Е доЕлемента, логички доИнклузивно) Враћа скуп елемената који се налазе између датог опсега.
Подскуп СортедСет(Е одЕлемента, Е доЕлемента)) Враћа скуп елемената који се налазе између датог опсега који укључује фромЕлемент и искључује тоЕлемент.
СортедСет таилСет(Е фромЕлемент) Враћа скуп елемената који су већи или једнаки наведеном елементу.
НавигаблеСет таилСет(Е фромЕлемент, укључујући логички) Враћа скуп елемената који су већи или једнаки (ако је укључено тачно) наведеном елементу.
логички садржи(објекат о) Враћа тачно ако овај скуп садржи наведени елемент.
боолеан исЕмпти() Враћа тачно ако овај скуп не садржи елементе.
логички уклони (објекат о) Користи се за уклањање наведеног елемента из овог скупа ако је присутан.
воид цлеар() Користи се за уклањање свих елемената из овог скупа.
Објецт цлоне() Враћа плитку копију ове инстанце ТрееСет-а.
Е прво () Враћа први (најнижи) елемент тренутно у овом сортираном скупу.
Е ласт() Враћа последњи (највиши) елемент тренутно у овом сортираном скупу.
инт сизе() Враћа број елемената у овом скупу.

Јава ТрееСет Примери

Јава ТрееСет Пример 1:

Хајде да видимо једноставан пример Јава ТрееСет-а.

Назив документа: ТрееСет1.јава

 import java.util.*; class TreeSet1{ public static void main(String args[]){ //Creating and adding elements TreeSet al=new TreeSet(); al.add('Ravi'); al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); //Traversing elements Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 
Тестирајте одмах

Излаз:

Ajay Ravi Vijay 

Јава ТрееСет Пример 2:

Погледајмо пример преласка елемената у опадајућем редоследу.

Назив документа: ТрееСет2.јава

 import java.util.*; class TreeSet2{ public static void main(String args[]){ TreeSet set=new TreeSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ajay'); System.out.println('Traversing element through Iterator in descending order'); Iterator i=set.descendingIterator(); while(i.hasNext()) { System.out.println(i.next()); } } } 
Тестирајте одмах

Излаз:

Traversing element through Iterator in descending order Vijay Ravi Ajay Traversing element through NavigableSet in descending order Vijay Ravi Ajay 

Јава ТрееСет Пример 3:

Хајде да видимо пример за преузимање и уклањање највеће и најниже вредности.

Назив документа: ТрееСет3.јава

линкедлист
 import java.util.*; class TreeSet3{ public static void main(String args[]){ TreeSet set=new TreeSet(); set.add(24); set.add(66); set.add(12); set.add(15); System.out.println('Lowest Value: '+set.pollFirst()); System.out.println('Highest Value: '+set.pollLast()); } } 

Излаз:

 Lowest Value: 12 Highest Value: 66 

Јава ТрееСет Пример 4:

У овом примеру изводимо различите НавигаблеСет операције.

Назив документа: ТрееСет4.јава

очистити нпм кеш
 import java.util.*; class TreeSet4{ public static void main(String args[]){ TreeSet set=new TreeSet(); set.add('A'); set.add('B'); set.add('C'); set.add('D'); set.add('E'); System.out.println('Initial Set: '+set); System.out.println('Reverse Set: '+set.descendingSet()); System.out.println('Head Set: '+set.headSet('C', true)); System.out.println('SubSet: '+set.subSet('A', false, 'E', true)); System.out.println('TailSet: '+set.tailSet('C', false)); } } 

Излаз:

Initial Set: [A, B, C, D, E] Reverse Set: [E, D, C, B, A] Head Set: [A, B, C] SubSet: [B, C, D, E] TailSet: [D, E] 

Јава ТрееСет Пример 5:

У овом примеру изводимо различите СортедСетСет операције.

Назив документа: ТрееСет5.јава

 import java.util.*; class TreeSet5{ public static void main(String args[]){ TreeSet set=new TreeSet(); set.add('A'); set.add('B'); set.add('C'); set.add('D'); set.add('E'); System.out.println('Intial Set: '+set); System.out.println('Head Set: '+set.headSet('C')); System.out.println('SubSet: '+set.subSet('A', 'E')); System.out.println('TailSet: '+set.tailSet('C')); } } 

Излаз:

Intial Set: [A, B, C, D, E] Head Set: [A, B] SubSet: [A, B, C, D] TailSet: [C, D, E] 

Јава ТрееСет Пример: књига

Хајде да видимо пример ТрееСет-а где додајемо књиге у скуп и штампамо све књиге. Елементи у ТрееСет-у морају бити типа Цомпарабле. Класе Стринг и Враппер су подразумевано упоредиве. Да бисте додали кориснички дефинисане објекте у ТрееСет, потребно је да имплементирате Цомпарабле интерфејс.

Назив документа: ТрееСетЕкампле.јава

 import java.util.*; class Book implements Comparable{ int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } // implementing the abstract method public int compareTo(Book b) { if(id&gt;b.id){ return 1; }else if(id <b.id){ return -1; }else{ 0; } public class treesetexample { static void main(string[] args) set treeset(); creating books book b1="new" book(121,'let us c','yashwant kanetkar','bpb',8); b2="new" book(233,'operating system','galvin','wiley',6); b3="new" book(101,'data communications & networking','forouzan','mc graw hill',4); adding to treeset set.add(b1); set.add(b2); set.add(b3); traversing for(book b:set){ system.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); < pre> <p> <strong>Output:</strong> </p> <pre>101 Data Communications &amp; Networking Forouzan Mc Graw Hill 4 121 Let us C Yashwant Kanetkar BPB 8 233 Operating System Galvin Wiley 6 </pre> <h3>ClassCast Exception in TreeSet</h3> <p>If we add an object of the class that is not implementing the Comparable interface, the ClassCast Exception is raised. Observe the following program.</p> <p> <strong>FileName:</strong> ClassCastExceptionTreeSet.java</p> <pre> // important import statement import java.util.*; class Employee { int empId; String name; // getting the name of the employee String getName() { return this.name; } // setting the name of the employee void setName(String name) { this.name = name; } // setting the employee id // of the employee void setId(int a) { this.empId = a; } // retrieving the employee id of // the employee int getId() { return this.empId; } } public class ClassCastExceptionTreeSet { // main method public static void main(String[] argvs) { // creating objects of the class Employee Employee obj1 = new Employee(); Employee obj2 = new Employee(); TreeSet ts = new TreeSet(); // adding the employee objects to // the TreeSet class ts.add(obj1); ts.add(obj2); System.out.println(&apos;The program has been executed successfully.&apos;); } } </pre> <p>When we compile the above program, we get the ClassCastException, as shown below.</p> <pre> Exception in thread &apos;main&apos; java.lang.ClassCastException: class Employee cannot be cast to class java.lang.Comparable (Employee is in unnamed module of loader &apos;app&apos;; java.lang.Comparable is in module java.base of loader &apos;bootstrap&apos;) at java.base/java.util.TreeMap.compare(TreeMap.java:1569) at java.base/java.util.TreeMap.addEntryToEmptyMap(TreeMap.java:776) at java.base/java.util.TreeMap.put(TreeMap.java:785) at java.base/java.util.TreeMap.put(TreeMap.java:534) at java.base/java.util.TreeSet.add(TreeSet.java:255) at ClassCastExceptionTreeSet.main(ClassCastExceptionTreeSet.java:52) </pre> <p> <strong>Explanation:</strong> In the above program, it is required to implement a Comparable interface. It is because the TreeSet maintains the sorting order, and for doing the sorting the comparison of different objects that are being inserted in the TreeSet is must, which is accomplished by implementing the Comparable interface.</p> <hr></b.id){>

Изузетак ЦлассЦаст у ТрееСет-у

Ако додамо објекат класе који не имплементира Цомпарабле интерфејс, подиже се изузетак ЦлассЦаст. Обратите пажњу на следећи програм.

3д у аутоцаду

Назив документа: ЦлассЦастЕкцептионТрееСет.јава

 // important import statement import java.util.*; class Employee { int empId; String name; // getting the name of the employee String getName() { return this.name; } // setting the name of the employee void setName(String name) { this.name = name; } // setting the employee id // of the employee void setId(int a) { this.empId = a; } // retrieving the employee id of // the employee int getId() { return this.empId; } } public class ClassCastExceptionTreeSet { // main method public static void main(String[] argvs) { // creating objects of the class Employee Employee obj1 = new Employee(); Employee obj2 = new Employee(); TreeSet ts = new TreeSet(); // adding the employee objects to // the TreeSet class ts.add(obj1); ts.add(obj2); System.out.println(&apos;The program has been executed successfully.&apos;); } } 

Када компајлирамо горњи програм, добијамо ЦлассЦастЕкцептион, као што је приказано испод.

 Exception in thread &apos;main&apos; java.lang.ClassCastException: class Employee cannot be cast to class java.lang.Comparable (Employee is in unnamed module of loader &apos;app&apos;; java.lang.Comparable is in module java.base of loader &apos;bootstrap&apos;) at java.base/java.util.TreeMap.compare(TreeMap.java:1569) at java.base/java.util.TreeMap.addEntryToEmptyMap(TreeMap.java:776) at java.base/java.util.TreeMap.put(TreeMap.java:785) at java.base/java.util.TreeMap.put(TreeMap.java:534) at java.base/java.util.TreeSet.add(TreeSet.java:255) at ClassCastExceptionTreeSet.main(ClassCastExceptionTreeSet.java:52) 

Објашњење: У горњем програму је потребно имплементирати упоредни интерфејс. То је зато што ТрееСет одржава редослед сортирања, а за обављање сортирања потребно је поређење различитих објеката који се убацују у ТрееСет, што се постиже имплементацијом интерфејса Цомпарабле.