Bet kuri atskirų objektų grupė, vaizduojama kaip vienas vienetas, yra žinoma kaip „Java“ objektų kolekcija. „Java“ programoje yra atskira sistema, pavadinta „ Kolekcijos struktūra buvo apibrėžtas JDK 1.2 versijoje, kurioje yra visos „Java“ kolekcijos klasės ir sąsaja.
Java, kolekcijos sąsaja ( java.util.Collection ) ir žemėlapio sąsaja ( java.util.Map ) yra dvi pagrindinės „Java“ kolekcijų klasių šakninės sąsajos.
Ko turėtumėte išmokti „Java“ kolekcijose?
- Sąrašo sąsaja
- Abstraktaus sąrašo klasė
- Abstraktaus nuoseklaus sąrašo klasė
- Masyvo sąrašas
- Vektorinė klasė
- Stack klasė
- LinkedList klasė
- Eilės sąsaja
- Blokavimo eilės sąsaja
- AbstractQueue klasė
- PriorityQueue klasė
- „PriorityBlockingQueue“ klasė
- ConcurrentLinkedQueue klasė
- ArrayBlockingQueue klasė
- DelayQueue klasė
- „LinkedBlockingQueue“ klasė
- LinkedTransferQueue
- Ir sąsaja
- BlockingDeque sąsaja
- „ConcurrentLinkedDeque“ klasė
- ArrayDeque klasė
- Nustatyti sąsają
- Abstrakčių rinkinių klasė
- CopyOnWriteArraySet klasė
- EnumSet klasė
- „ConcurrentHashMap“ klasė
- HashSet klasė
- LinkedHashSet klasė
- SortedSet sąsaja
- NavigableSet sąsaja
- Medžių rinkinys
- ConcurrentSkipListSet klasė
- Žemėlapio sąsaja
- Rūšiuoto žemėlapio sąsaja
- NavigableMap sąsaja
- ConcurrentMap sąsaja
- TreeMap klasė
- AbstractMap klasė
- „ConcurrentHashMap“ klasė
- „EnumMap“ klasė
- HashMap klasė
- „IdentityHashMap“ klasė
- LinkedHashMap klasė
- HashTable klasė
- Savybių klasė
- Kitos svarbios sąvokos
- Kaip konvertuoti „HashMap“ į „ArrayList“.
- Atsitiktinai pasirinkite elementus iš sąrašo
- Kaip įtraukti visus elementus iš kolekcijos į ArrayList
- „Java“ žemėlapių konvertavimas į sąrašą
- Masyvo konvertavimas į ArrayList
- ArrayList konvertavimas į masyvą
- Array ir ArrayList skirtumai
Kas yra „Java“ sistema?
Karkasas yra klasių ir sąsajų rinkinys, suteikiantis paruoštą architektūrą. Norint įdiegti naują funkciją ar klasę, nereikia apibrėžti sistemos. Tačiau optimalus į objektą orientuotas dizainas visada apima sistemą su klasių rinkiniu, kad visos klasės atliktų tą pačią užduotį.
Reikia atskiro kolekcijos sistemos Java
Prieš pradedant rinkinio sistemą (arba prieš JDK 1.2), buvo naudojami standartiniai Java objektų (arba kolekcijų) grupavimo metodai. Masyvai arba Vektoriai , arba Hashtables . Visos šios kolekcijos neturėjo bendros sąsajos. Todėl, nors pagrindinis visų kolekcijų tikslas yra tas pats, visų šių kolekcijų įgyvendinimas buvo apibrėžtas atskirai ir tarp jų neturėjo jokio ryšio. Be to, vartotojams labai sunku atsiminti viską metodus , sintaksė ir konstruktoriai yra kiekvienoje kolekcijos klasėje.
Supraskime tai su elemento pridėjimo maišos lentelėje ir vektoriaus pavyzdžiu.
java yra lygi
Pavyzdys:
Java
// Java program to demonstrate> // why collection framework was needed> import> java.io.*;> import> java.util.*;> class> CollectionDemo {> >public> static> void> main(String[] args)> >{> >// Creating instances of the array,> >// vector and hashtable> >int> arr[] =>new> int>[] {>1>,>2>,>3>,>4> };> >Vector v =>new> Vector();> >Hashtable h =>new> Hashtable();> >// Adding the elements into the> >// vector> >v.addElement(>1>);> >v.addElement(>2>);> >// Adding the element into the> >// hashtable> >h.put(>1>,>'geeks'>);> >h.put(>2>,>'4geeks'>);> >// Array instance creation requires [],> >// while Vector and hastable require ()> >// Vector element insertion requires addElement(),> >// but hashtable element insertion requires put()> >// Accessing the first element of the> >// array, vector and hashtable> >System.out.println(arr[>0>]);> >System.out.println(v.elementAt(>0>));> >System.out.println(h.get(>1>));> >// Array elements are accessed using [],> >// vector elements using elementAt()> >// and hashtable elements using get()> >}> }> |
>
>Išvestis
1 1 geeks>
Kaip matome, nė viena iš šių kolekcijų (Array, Vector ar Hashtable) neįgyvendina standartinės nario prieigos sąsajos, todėl programuotojams buvo labai sunku parašyti algoritmus, kurie gali veikti visų rūšių kolekcijose. Kitas trūkumas yra tas, kad dauguma „Vektoriaus“ metodų yra galutiniai, o tai reiškia, kad negalime išplėsti „Vektorių“ klasės, kad įgyvendintume panašų rinkinį. Todėl „Java“ kūrėjai nusprendė sukurti bendrą sąsają, kad išspręstų aukščiau paminėtas problemas, ir JDK 1.2 versijoje pristatė rinkinio sistemą, kuri buvo modifikuota, kad atitiktų kolekcijos sistemą.
„Java Collection Framework“ pranašumai
Kadangi rinkimo sistemos nebuvimas sukėlė pirmiau minėtus trūkumus, toliau pateikiami rinkimo sistemos pranašumai.
- Nuosekli API: API turi pagrindinį sąsajų rinkinį, pvz Kolekcija , Nustatyti , Sąrašas , arba Žemėlapis , turi visos klasės (ArrayList, LinkedList, Vector ir tt), kurios įgyvendina šias sąsajas kai kurie bendras metodų rinkinys.
- Sumažina programavimo pastangas: Programuotojas neturi jaudintis dėl kolekcijos dizaino, jis gali sutelkti dėmesį į geriausią jos panaudojimą savo programoje. Todėl sėkmingai įgyvendinta pagrindinė Objektinio programavimo (t.y.) abstrakcijos koncepcija.
- Padidina programos greitį ir kokybę: Padidina našumą suteikdamas didelio našumo naudingų duomenų struktūrų ir algoritmų įgyvendinimą, nes tokiu atveju programuotojui nereikia galvoti apie geriausią konkrečios duomenų struktūros įgyvendinimą. Jis gali tiesiog panaudoti geriausią įgyvendinimą, kad drastiškai padidintų savo algoritmo / programos našumą.
Kolekcijos sistemos hierarchija Java
Naudingumo pakete (java.util) yra visos klasės ir sąsajos, kurių reikalauja rinkimo sistema. Kolekcijos sistemoje yra sąsaja, pavadinta kartojama sąsaja, kuri suteikia iteratoriui kartoti visas kolekcijas. Šią sąsają išplečia pagrindinė rinkimo sąsaja, kuri veikia kaip rinkimo sistemos šaknis. Visos kolekcijos išplečia šią kolekcijos sąsają ir taip praplečia iteratoriaus savybes ir šios sąsajos metodus. Toliau pateiktame paveikslėlyje parodyta kolekcijos sistemos hierarchija.
Prieš suprasdami skirtingus aukščiau pateiktos sistemos komponentus, pirmiausia supraskime klasę ir sąsają.
- Klasė : Klasė yra vartotojo apibrėžtas projektas arba prototipas, iš kurio kuriami objektai. Tai reiškia ypatybių arba metodų, bendrų visiems vieno tipo objektams, rinkinį.
- Sąsaja : Kaip ir klasėje, sąsajoje gali būti metodai ir kintamieji, tačiau sąsajoje deklaruoti metodai pagal numatytuosius nustatymus yra abstraktūs (tik metodo parašas, niekas). Sąsajos nurodo, ką klasė turi daryti, o ne kaip. Tai yra klasės planas.
Kolekcijos sąsajos metodai
Šioje sąsajoje yra įvairių metodų, kuriuos gali tiesiogiai naudoti visos šią sąsają įgyvendinančios kolekcijos. Jie yra:
| Metodas | apibūdinimas |
|---|---|
| pridėti (objektas) | Šis metodas naudojamas objektui įtraukti į kolekciją. |
| pridėti viską (rinkinys c) | Šiuo metodu visi nurodytos kolekcijos elementai pridedami prie šios kolekcijos. |
| aišku () | Šis metodas pašalina visus elementus iš šios kolekcijos. |
| yra (O objektas) | Šis metodas grąžina teisingą, jei kolekcijoje yra nurodytas elementas. |
| yra viskas (rinkinys c) | Šis metodas grąžina teisingą, jei kolekcijoje yra visi nurodytos kolekcijos elementai. |
| lygus (O objektas) | Šis metodas lygina nurodytą objektą su šia lygybės kolekcija. |
| maišos kodas () | Šis metodas naudojamas šio rinkinio maišos kodo reikšmei grąžinti. |
| Yra tuščias() | Šis metodas grąžina teisingą, jei šiame rinkinyje nėra elementų. |
| iteratorius () | Šis metodas grąžina šio rinkinio elementų iteratorių. |
| max () | Šis metodas naudojamas norint grąžinti maksimalią kolekcijoje esančią vertę. |
| parallelStream() | Šis metodas grąžina lygiagretų srautą, kurio šaltinis yra ši kolekcija. |
| pašalinti (O objektas) | Šis metodas naudojamas norint pašalinti nurodytą objektą iš kolekcijos. Jei yra pasikartojančių reikšmių, šis metodas pašalina pirmąjį objekto įvykį. |
| pašalinti viską (rinkinys c) | Šis metodas naudojamas pašalinti iš kolekcijos visus pateiktoje kolekcijoje paminėtus objektus. |
| pašalinti, jei (predikacinis filtras) | Šis metodas naudojamas pašalinti visus šios kolekcijos elementus, kurie atitinka pateiktą predikatas . |
| išlaikyti viską (rinkinys c) | Šis metodas naudojamas norint išlaikyti tik tuos šio rinkinio elementus, kurie yra nurodytoje kolekcijoje. |
| dydis () | Šis metodas naudojamas kolekcijos elementų skaičiui grąžinti. |
| skirstytuvas () | Šis metodas naudojamas kuriant a Skirstytuvas virš šios kolekcijos elementų. |
| srautas() | Šis metodas naudojamas norint grąžinti nuoseklų srautą, kurio šaltinis yra ši kolekcija. |
| toArray () | Šis metodas naudojamas norint grąžinti masyvą, kuriame yra visi šios kolekcijos elementai. |
Sąsajos, kurios praplečia Java kolekcijų sąsają
Rinkimo sistemoje yra kelios sąsajos, kuriose kiekviena sąsaja naudojama tam tikro tipo duomenims saugoti. Toliau pateikiamos sistemoje esančios sąsajos.
1. Iteruojama sąsaja
Tai yra pagrindinė visos rinkinio sistemos sąsaja. Kolekcijos sąsaja išplečia kartojamą sąsają. Todėl iš esmės visos sąsajos ir klasės įgyvendina šią sąsają. Pagrindinė šios sąsajos funkcija yra pateikti kolekcijų iteratorių. Todėl šioje sąsajoje yra tik vienas abstraktus metodas – iteratorius. Tai grąžina
Iterator iterator();>
2. Kolekcijos sąsaja
Ši sąsaja išplečia kartojamą sąsają ir ją įgyvendina visos rinkinio sistemos klasės. Šioje sąsajoje yra visi pagrindiniai metodai, kuriuos turi kiekviena kolekcija, pvz., duomenų įtraukimas į kolekciją, duomenų pašalinimas, duomenų išvalymas ir tt Visi šie metodai yra įdiegti šioje sąsajoje, nes šiuos metodus įgyvendina visos klasės, nepaisant jų stiliaus. įgyvendinimo. Be to, naudojant šiuos metodus šioje sąsajoje, metodų pavadinimai yra universalūs visoms kolekcijoms. Todėl trumpai galime pasakyti, kad ši sąsaja sukuria pagrindą, ant kurio yra įdiegtos kolekcijos klasės.
3. Sąrašo sąsaja
Tai yra antrinė kolekcijos sąsajos sąsaja. Ši sąsaja skirta sąrašo tipo duomenims, kuriuose galime saugoti visas užsakytas objektų kolekcijas. Tai taip pat leidžia jame pateikti pasikartojančius duomenis. Šią sąrašo sąsają įgyvendina įvairios klasės, tokios kaip ArrayList, Vector, Stack ir kt. Kadangi visi poklasiai įgyvendina sąrašą, sąrašo objektą galime sukurti bet kuria iš šių klasių.
Pavyzdžiui:
List al = new ArrayList (); List ll = new LinkedList (); List v = new Vector (); Where T is the type of the object>
Sąrašo sąsają įgyvendinančios klasės yra šios:
i). ArrayList
„ArrayList“ suteikia mums dinaminius „Java“ masyvus. Tačiau jis gali būti lėtesnis nei standartiniai masyvai, bet gali būti naudingas programose, kuriose reikia daug manipuliuoti masyve. ArrayList dydis automatiškai padidinamas, jei kolekcija didėja arba susitraukia, jei objektai pašalinami iš kolekcijos. Java ArrayList leidžia mums atsitiktinai pasiekti sąrašą. ArrayList negali būti naudojamas vyniojimo klasė tokiems atvejams.
Supraskime ArrayList šiuo pavyzdžiu:
Java
// Java program to demonstrate the> // working of ArrayList> import> java.io.*;> import> java.util.*;> class> GFG {> >// Main Method> >public> static> void> main(String[] args)> >{> >// Declaring the ArrayList with> >// initial size n> >ArrayList al =>new> ArrayList();> >// Appending new elements at> >// the end of the list> >for> (>int> i =>1>; i <=>5>; i++)> >al.add(i);> >// Printing elements> >System.out.println(al);> >// Remove element at index 3> >al.remove(>3>);> >// Displaying the ArrayList> >// after deletion> >System.out.println(al);> >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(al.get(i) + ' '); } }> |
>
>Išvestis
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
ii). LinkedList
„LinkedList“ klasė yra įgyvendinimas Supraskime „LinkedList“ naudodami šį pavyzdį:
Java
// Java program to demonstrate the> // working of LinkedList> import> java.io.*;> import> java.util.*;> class> GFG {> >// Main Method> >public> static> void> main(String[] args)> >{> >// Declaring the LinkedList> >LinkedList ll =>new> LinkedList();> >// Appending new elements at> >// the end of the list> >for> (>int> i =>1>; i <=>5>; i++)> >ll.add(i);> >// Printing elements> >System.out.println(ll);> >// Remove element at index 3> >ll.remove(>3>);> >// Displaying the List> >// after deletion> >System.out.println(ll);> >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(ll.get(i) + ' '); } }> |
>
>Išvestis
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
iii). Vektorius
Vektorius suteikia mums dinaminius Java masyvus. Tačiau jis gali būti lėtesnis nei standartiniai masyvai, bet gali būti naudingas programose, kuriose reikia daug manipuliuoti masyve. Diegimo požiūriu tai yra identiška ArrayList. Tačiau pagrindinis skirtumas tarp vektoriaus ir „ArrayList“ yra tas, kad vektorius yra sinchronizuojamas, o „ArrayList“ - nesinchronizuojamas.
Supraskime vektorių pavyzdžiu:
Java
// Java program to demonstrate the> // working of Vector> import> java.io.*;> import> java.util.*;> class> GFG {> >// Main Method> >public> static> void> main(String[] args)> >{> >// Declaring the Vector> >Vector v =>new> Vector();> >// Appending new elements at> >// the end of the list> >for> (>int> i =>1>; i <=>5>; i++)> >v.add(i);> >// Printing elements> >System.out.println(v);> >// Remove element at index 3> >v.remove(>3>);> >// Displaying the Vector> >// after deletion> >System.out.println(v);> >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(v.get(i) + ' '); } }> |
>
>Išvestis
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
iv). Stack
Stack klasės modeliai ir įgyvendinimaipaskutinis pirmas. Be pagrindinių „push“ ir „pop“ operacijų, klasėje yra dar trys tuščios, paieškos ir žvilgtelėjimo funkcijos. Klasė taip pat gali būti vadinama Vector poklasiu.
Supraskime krūvą pavyzdžiu:
Java
// Java program to demonstrate the> // working of a stack> import> java.util.*;> public> class> GFG {> >// Main Method> >public> static> void> main(String args[])> >{> >Stack stack =>new> Stack();> >stack.push(>'Geeks'>);> >stack.push(>'For'>);> >stack.push(>'Geeks'>);> >stack.push(>'Geeks'>);> >// Iterator for the stack> >Iterator itr = stack.iterator();> >// Printing the stack> >while> (itr.hasNext()) {> >System.out.print(itr.next() +>' '>);> >}> >System.out.println();> >stack.pop();> >// Iterator for the stack> >itr = stack.iterator();> >// Printing the stack> >while> (itr.hasNext()) {> >System.out.print(itr.next() +>' '>);> >}> >}> }> |
>
>Išvestis
Geeks For Geeks Geeks Geeks For Geeks>
Pastaba: Stack yra vektoriaus ir senosios klasės poklasis. Jis yra saugus siūlams ir gali būti virš galvos aplinkoje, kurioje siūlų sauga nėra reikalinga. Galima naudoti „Stack“ alternatyvą ArrayDequeue kuris nėra saugus gijai ir turi greitesnį masyvo įgyvendinimą.
4. Eilės sąsaja
Kaip rodo pavadinimas, eilės sąsaja palaiko FIFO (pirmas į pirmąją išeina) tvarką, panašią į realaus pasaulio eilės eilutę. Ši sąsaja skirta saugoti visus elementus, kur svarbi elementų tvarka. Pavyzdžiui, kai bandome užsisakyti bilietą, bilietai parduodami pirmumo tvarka. Todėl asmuo, kurio prašymas patenka pirmas į eilę, gauna bilietą. Yra įvairių klasių, pvz PriorityQueue , ArrayDeque tt Kadangi visi šie poklasiai įgyvendina eilę, eilės objektą galime sukurti bet kuria iš šių klasių.
Pavyzdžiui:
Queue pq = new PriorityQueue (); Queue ad = new ArrayDeque (); Where T is the type of the object.>
Dažniausiai naudojamas eilės sąsajos įgyvendinimas yra PriorityQueue.
Prioritetinė eilė
PriorityQueue naudojama, kai objektai turi būti apdorojami pagal prioritetą. Žinoma, kad eilė veikia pagal algoritmą First-In-First-Out, tačiau kartais reikia eilės elementus apdoroti pagal prioritetą ir tokiais atvejais naudojama ši klasė. „PriorityQueue“ yra pagrįsta prioritetų krūva. Pirmenybinės eilės elementai rikiuojami pagal natūralią tvarką arba a Palyginimas teikiama eilės statybos metu, priklausomai nuo to, koks konstruktorius naudojamas.
Supraskime prioritetinę eilę su pavyzdžiu:
Java
// Java program to demonstrate the working of> // priority queue in Java> import> java.util.*;> class> GfG {> >// Main Method> >public> static> void> main(String args[])> >{> >// Creating empty priority queue> >PriorityQueue pQueue> >=>new> PriorityQueue();> >// Adding items to the pQueue using add()> >pQueue.add(>10>);> >pQueue.add(>20>);> >pQueue.add(>15>);> >// Printing the top element of PriorityQueue> >System.out.println(pQueue.peek());> >// Printing the top element and removing it> >// from the PriorityQueue container> >System.out.println(pQueue.poll());> >// Printing the top element again> >System.out.println(pQueue.peek());> >}> }> |
>
>Išvestis
10 10 15>
5. Ir sąsaja
Tai labai nedidelis variantas Pavyzdžiui:
Deque ad = new ArrayDeque (); Where T is the type of the object.>
Klasė, kuri įgyvendina deque sąsają, yra ArrayDeque.
ArrayDeque
„ArrayDeque“ klasė, įdiegta rinkimo sistemoje, suteikia mums būdą pritaikyti keičiamo dydžio masyvą. Tai specialus masyvas, kuris auga ir leidžia vartotojams pridėti arba pašalinti elementą iš abiejų eilės pusių. Masyvo deques neturi talpos apribojimų ir didėja, kai reikia, kad būtų palaikomas naudojimas.
Supraskime ArrayDeque su pavyzdžiu:
Java
// Java program to demonstrate the> // ArrayDeque class in Java> import> java.util.*;> public> class> ArrayDequeDemo {> >public> static> void> main(String[] args)> >{> >// Initializing an deque> >ArrayDeque de_que> >=>new> ArrayDeque(>10>);> >// add() method to insert> >de_que.add(>10>);> >de_que.add(>20>);> >de_que.add(>30>);> >de_que.add(>40>);> >de_que.add(>50>);> >System.out.println(de_que);> >// clear() method> >de_que.clear();> >// addFirst() method to insert the> >// elements at the head> >de_que.addFirst(>564>);> >de_que.addFirst(>291>);> >// addLast() method to insert the> >// elements at the tail> >de_que.addLast(>24>);> >de_que.addLast(>14>);> >System.out.println(de_que);> >}> }> |
>
>Išvestis
[10, 20, 30, 40, 50] [291, 564, 24, 14]>
6. Nustatyti sąsają
Rinkinys yra netvarkinga objektų kolekcija, kurioje negalima saugoti pasikartojančių reikšmių. Ši kolekcija naudojama, kai norime išvengti objektų dubliavimo ir norime saugoti tik unikalius objektus. Šią rinkinio sąsają įgyvendina įvairios klasės, tokios kaip HashSet, TreeSet, LinkedHashSet ir kt. Kadangi rinkinį įgyvendina visi poklasiai, rinkinio objektą galime sukurti bet kuria iš šių klasių.
Pavyzdžiui:
Set hs = new HashSet (); Set lhs = new LinkedHashSet (); Set ts = new TreeSet (); Where T is the type of the object.>
Toliau pateikiamos klasės, kuriose įdiegta Set sąsaja:
i). HashSet
HashSet klasė yra neatskiriama maišos lentelės duomenų struktūros įgyvendinimas. Objektai, kuriuos įterpiame į HashSet, negarantuoja, kad bus įterpti ta pačia tvarka. Objektai įterpiami pagal jų maišos kodą. Ši klasė taip pat leidžia įterpti NULL elementus. Supraskime HashSet su pavyzdžiu:
Java
// Java program to demonstrate the> // working of a HashSet> import> java.util.*;> public> class> HashSetDemo {> >// Main Method> >public> static> void> main(String args[])> >{> >// Creating HashSet and> >// adding elements> >HashSet hs =>new> HashSet();> >hs.add(>'Geeks'>);> >hs.add(>'For'>);> >hs.add(>'Geeks'>);> >hs.add(>'Is'>);> >hs.add(>'Very helpful'>);> >// Traversing elements> >Iterator itr = hs.iterator();> >while> (itr.hasNext()) {> >System.out.println(itr.next());> >}> >}> }> |
>
>Išvestis
Very helpful Geeks For Is>
ii). LinkedHashSet
„LinkedHashSet“ yra labai panašus į „HashSet“. Skirtumas tas, kad duomenims saugoti naudojamas dvigubai susietas sąrašas ir išlaikoma elementų tvarka.
Supraskime „LinkedHashSet“ pateikdami pavyzdį:
Java
// Java program to demonstrate the> // working of a LinkedHashSet> import> java.util.*;> public> class> LinkedHashSetDemo {> >// Main Method> >public> static> void> main(String args[])> >{> >// Creating LinkedHashSet and> >// adding elements> >LinkedHashSet lhs> >=>new> LinkedHashSet();> >lhs.add(>'Geeks'>);> >lhs.add(>'For'>);> >lhs.add(>'Geeks'>);> >lhs.add(>'Is'>);> >lhs.add(>'Very helpful'>);> >// Traversing elements> >Iterator itr = lhs.iterator();> >while> (itr.hasNext()) {> >System.out.println(itr.next());> >}> >}> }> |
>
>Išvestis
Geeks For Is Very helpful>
7. Rūšiuota rinkinio sąsaja
Ši sąsaja labai panaši į nustatytą sąsają. Vienintelis skirtumas yra tas, kad ši sąsaja turi papildomų metodų, kurie palaiko elementų tvarką. Rūšiuotų rinkinių sąsaja išplečia rinkinio sąsają ir naudojama tvarkyti duomenis, kuriuos reikia rūšiuoti. Klasė, kuri įgyvendina šią sąsają, yra TreeSet. Kadangi ši klasė įgyvendina SortedSet, mes galime sukurti SortedSet objektą su šia klase.
Pavyzdžiui:
SortedSet ts = new TreeSet (); Where T is the type of the object.>
Klasė, kuri įgyvendina surūšiuotų rinkinių sąsają, yra TreeSet.
Medžių rinkinys
TreeSet klasė saugojimui naudoja medį. Elementų eiliškumą palaiko rinkinys, naudodamas natūralią jų tvarką, neatsižvelgiant į tai, ar pateikiamas aiškus palyginiklis, ar ne. Tai turi atitikti lygius, jei norima tinkamai įdiegti sąsają Set. Jį taip pat galima užsisakyti naudojant Comparator, pateiktą nustatytu kūrimo laiku, priklausomai nuo to, kuris konstruktorius naudojamas.
Supraskime TreeSet pavyzdžiu:
Java
// Java program to demonstrate the> // working of a TreeSet> import> java.util.*;> public> class> TreeSetDemo {> >// Main Method> >public> static> void> main(String args[])> >{> >// Creating TreeSet and> >// adding elements> >TreeSet ts =>new> TreeSet();> >ts.add(>'Geeks'>);> >ts.add(>'For'>);> >ts.add(>'Geeks'>);> >ts.add(>'Is'>);> >ts.add(>'Very helpful'>);> >// Traversing elements> >Iterator itr = ts.iterator();> >while> (itr.hasNext()) {> >System.out.println(itr.next());> >}> >}> }> |
>
>Išvestis
For Geeks Is Very helpful>
8. Žemėlapio sąsaja
Žemėlapis yra duomenų struktūra, palaikanti rakto-reikšmių porą duomenims susieti. Ši sąsaja nepalaiko pasikartojančių raktų, nes tas pats raktas negali turėti kelių atvaizdų, tačiau leidžia pasikartoti skirtingų raktų reikšmes. Žemėlapis yra naudingas, jei yra duomenų ir norime atlikti operacijas pagal raktą. Šią žemėlapio sąsają įgyvendina įvairios klasės, pvz HashMap , TreeMap tt Kadangi visi poklasiai įgyvendina žemėlapį, žemėlapio objektą galime sukurti bet kuria iš šių klasių.
Pavyzdžiui:
Map hm = new HashMap (); Map tm = new TreeMap (); Where T is the type of the object.>
Dažnai naudojamas žemėlapio sąsajos įgyvendinimas yra HashMap.
HashMap
„HashMap“ suteikia pagrindinį „Java“ žemėlapio sąsajos įgyvendinimą. Jis saugo duomenis poromis (raktas, reikšmė). Norėdami pasiekti reikšmę HashMap, turime žinoti jos raktą. HashMap naudoja techniką, vadinamą maišos apdorojimu. Maišos keitimas yra būdas konvertuoti didelę eilutę į mažą eilutę, kuri reiškia tą pačią eilutę, kad indeksavimo ir paieškos operacijos būtų greitesnės. HashSet taip pat naudoja HashMap viduje.
Supraskime „HashMap“ pavyzdžiu:
Java
// Java program to demonstrate the> // working of a HashMap> import> java.util.*;> public> class> HashMapDemo {> >// Main Method> >public> static> void> main(String args[])> >{> >// Creating HashMap and> >// adding elements> >HashMap hm> >=>new> HashMap();> >hm.put(>1>,>'Geeks'>);> >hm.put(>2>,>'For'>);> >hm.put(>3>,>'Geeks'>);> >// Finding the value for a key> >System.out.println(>'Value for 1 is '> + hm.get(>1>));> >// Traversing through the HashMap> >for> (Map.Entry e : hm.entrySet())> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
>
>Išvestis
Value for 1 is Geeks 1 Geeks 2 For 3 Geeks>