Vsaka skupina posameznih predmetov, ki so predstavljeni kot ena enota, je znana kot zbirka predmetov Java. V Javi je ločeno ogrodje, imenovano Ogrodje zbirke je definiran v JDK 1.2, ki vsebuje vse razrede zbirke Java in vmesnik.
V Javi je vmesnik Collection ( java.util.Collection ) in vmesnik zemljevida ( java.util.Map ) sta dva glavna korenska vmesnika razredov zbirke Java.
Kaj bi se morali naučiti v zbirkah Java?
- Seznam vmesnika
- Razred abstraktnega seznama
- Razred abstraktnega zaporednega seznama
- Seznam nizov
- Vektorski razred
- Stack Class
- Razred LinkedList
- Vmesnik čakalne vrste
- Vmesnik čakalne vrste za blokiranje
- Razred AbstractQueue
- PriorityQueue Class
- PriorityBlockingQueue Class
- Razred ConcurrentLinkedQueue
- Razred ArrayBlockingQueue
- Razred DelayQueue
- Razred LinkedBlockingQueue
- LinkedTransferQueue
- In vmesnik
- BlockingDeque vmesnik
- Razred ConcurrentLinkedDeque
- Razred ArrayDeque
- Nastavite vmesnik
- Razred abstraktnega niza
- Razred CopyOnWriteArraySet
- Razred EnumSet
- Razred ConcurrentHashMap
- Razred HashSet
- Razred LinkedHashSet
- Vmesnik SortedSet
- Vmesnik NavigableSet
- TreeSet
- Razred ConcurrentSkipListSet
- Vmesnik zemljevida
- Vmesnik SortedMap
- NavigableMap vmesnik
- Vmesnik ConcurrentMap
- Razred TreeMap
- Razred AbstractMap
- Razred ConcurrentHashMap
- Razred EnumMap
- Razred HashMap
- Razred IdentityHashMap
- Razred LinkedHashMap
- Razred HashTable
- Lastnosti Razred
- Drugi pomembni pojmi
- Kako pretvoriti HashMap v ArrayList
- Naključno izberite elemente s seznama
- Kako dodati vse elemente iz zbirke na ArrayList
- Pretvorba zemljevidov Java v seznam
- Pretvorba matrike v ArrayList
- Pretvorba ArrayList v Array
- Razlike med Array in ArrayList
Kaj je okvir v Javi?
Ogrodje je niz razredov in vmesnikov, ki zagotavljajo že pripravljeno arhitekturo. Da bi implementirali novo funkcijo ali razred, ni treba definirati ogrodja. Vendar pa optimalna objektno usmerjena zasnova vedno vključuje ogrodje z zbirko razredov, tako da vsi razredi izvajajo isto vrsto naloge.
Potreba po ločenem zbirnem ogrodju v Javi
Pred uvedbo zbirnega ogrodja (ali pred JDK 1.2) so bile standardne metode za združevanje objektov (ali zbirk) Java Nizi oz Vektorji , oz Zgoščene tabele . Vse te zbirke niso imele skupnega vmesnika. Čeprav je torej glavni cilj vseh zbirk enak, je bila izvedba vseh zbirk opredeljena neodvisno in med seboj ni imela korelacije. Poleg tega si je uporabnikom zelo težko zapomniti vse različne metode , sintaksa in konstruktorji prisoten v vsakem razredu zbirke.
Razumejmo to s primerom dodajanja elementa v razpršilno tabelo in vektor.
25 od 100
primer:
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()> >}> }> |
>
>Izhod
1 1 geeks>
Kot lahko opazimo, nobena od teh zbirk (Array, Vector ali Hashtable) ne izvaja standardnega vmesnika za dostop do članov, zato je bilo programerjem zelo težko napisati algoritme, ki lahko delujejo za vse vrste zbirk. Druga pomanjkljivost je, da je večina metod 'Vector' končnih, kar pomeni, da razreda 'Vector' ne moremo razširiti za izvajanje podobne vrste zbirke. Zato so se razvijalci Jave odločili, da pripravijo skupen vmesnik za reševanje zgoraj omenjenih težav in predstavili ogrodje zbirke v objavi JDK 1.2, pri čemer so bili podedovani vektorji in zgoščevalne tabele spremenjeni, da ustrezajo ogrodju zbiranja.
Prednosti Java Collection Framework
Ker je pomanjkanje okvira za zbiranje povzročilo zgornji sklop pomanjkljivosti, so naslednje prednosti okvira za zbiranje.
- Dosleden API: API ima osnovni nabor vmesnikov, kot je Zbirka , Set , Seznam , oz Zemljevid , imajo vsi razredi (ArrayList, LinkedList, Vector itd.), ki izvajajo te vmesnike nekaj skupen nabor metod.
- Zmanjša napor pri programiranju: Programerju ni treba skrbeti za oblikovanje zbirke, temveč se lahko osredotoči na njeno najboljšo uporabo v svojem programu. Zato je bil osnovni koncept objektno usmerjenega programiranja (tj. abstrakcije) uspešno implementiran.
- Poveča hitrost in kakovost programa: Poveča zmogljivost z zagotavljanjem visoko zmogljivih implementacij uporabnih podatkovnih struktur in algoritmov, ker v tem primeru programerju ni treba razmišljati o najboljši implementaciji določene podatkovne strukture. Lahko preprosto uporabi najboljšo implementacijo za drastično povečanje učinkovitosti svojega algoritma/programa.
Hierarhija zbirnega ogrodja v Javi
Paket pripomočkov (java.util) vsebuje vse razrede in vmesnike, ki jih zahteva ogrodje zbirke. Ogrodje zbirke vsebuje vmesnik, imenovan iterable vmesnik, ki omogoča iteratorju iteracijo skozi vse zbirke. Ta vmesnik je razširjen z vmesnikom glavne zbirke, ki deluje kot koren za ogrodje zbirke. Vse zbirke razširjajo ta vmesnik zbirke in s tem razširjajo lastnosti iteratorja in metode tega vmesnika. Naslednja slika ponazarja hierarhijo ogrodja zbirke.
Preden razumemo različne komponente v zgornjem ogrodju, najprej razumejmo razred in vmesnik.
- Razred : Razred je uporabniško definiran načrt ali prototip, iz katerega so ustvarjeni predmeti. Predstavlja nabor lastnosti ali metod, ki so skupne vsem objektom iste vrste.
- Vmesnik : Tako kot razred ima lahko tudi vmesnik metode in spremenljivke, vendar so metode, deklarirane v vmesniku, privzeto abstraktne (samo podpis metode, nihče). Vmesniki določajo, kaj mora razred narediti in ne kako. To je načrt razreda.
Metode zbirnega vmesnika
Ta vmesnik vsebuje različne metode, ki jih lahko neposredno uporabljajo vse zbirke, ki izvajajo ta vmesnik. To so:
| Metoda | Opis |
|---|---|
| dodaj (predmet) | Ta metoda se uporablja za dodajanje predmeta v zbirko. |
| addAll(zbirka c) | Ta metoda doda vse elemente v dani zbirki tej zbirki. |
| počisti() | Ta metoda odstrani vse elemente iz te zbirke. |
| vsebuje (predmet o) | Ta metoda vrne true, če zbirka vsebuje navedeni element. |
| vsebujeVse(Zbirka c) | Ta metoda vrne true, če zbirka vsebuje vse elemente v dani zbirki. |
| je enako (predmet o) | Ta metoda primerja podani objekt s to zbirko za enakost. |
| hashCode() | Ta metoda se uporablja za vrnitev vrednosti zgoščene kode za to zbirko. |
| je prazno() | Ta metoda vrne true, če ta zbirka ne vsebuje elementov. |
| iterator() | Ta metoda vrne iterator nad elementi v tej zbirki. |
| max() | Ta metoda se uporablja za vrnitev največje vrednosti, ki je prisotna v zbirki. |
| parallelStream() | Ta metoda vrne vzporedni tok s to zbirko kot izvorom. |
| odstrani (predmet o) | Ta metoda se uporablja za odstranitev podanega predmeta iz zbirke. Če obstajajo podvojene vrednosti, potem ta metoda odstrani prvo pojavitev predmeta. |
| odstraniVse(Zbirka c) | Ta metoda se uporablja za odstranitev vseh predmetov, omenjenih v dani zbirki, iz zbirke. |
| removeIf (predikatni filter) | Ta metoda se uporablja za odstranitev vseh elementov te zbirke, ki ustrezajo danosti predikat . |
| retainAll(zbirka c) | Ta metoda se uporablja za ohranitev samo elementov v tej zbirki, ki so vsebovani v navedeni zbirki. |
| velikost () | Ta metoda se uporablja za vrnitev števila elementov v zbirki. |
| spliterator() | Ta metoda se uporablja za ustvarjanje a Spliterator nad elementi v tej zbirki. |
| tok () | Ta metoda se uporablja za vrnitev zaporednega toka s to zbirko kot izvorom. |
| toArray() | Ta metoda se uporablja za vrnitev matrike, ki vsebuje vse elemente v tej zbirki. |
Vmesniki, ki razširjajo vmesnik zbirk Java
Ogrodje zbirke vsebuje več vmesnikov, kjer se vsak vmesnik uporablja za shranjevanje določene vrste podatkov. Spodaj so vmesniki, ki so prisotni v ogrodju.
1. Ponovljiv vmesnik
To je korenski vmesnik za celotno ogrodje zbirke. Zbiralni vmesnik razširja ponovljivi vmesnik. Zato vsi vmesniki in razredi sami po sebi izvajajo ta vmesnik. Glavna funkcija tega vmesnika je zagotoviti iterator za zbirke. Zato ta vmesnik vsebuje samo eno abstraktno metodo, ki je iterator. Vrne
Iterator iterator();>
2. Zbirni vmesnik
Ta vmesnik razširja ponovljivi vmesnik in ga izvajajo vsi razredi v ogrodju zbirke. Ta vmesnik vsebuje vse osnovne metode, ki jih ima vsaka zbirka, kot je dodajanje podatkov v zbirko, odstranjevanje podatkov, brisanje podatkov itd. Vse te metode so implementirane v tem vmesniku, ker te metode izvajajo vsi razredi, ne glede na njihov slog izvajanja. Poleg tega prisotnost teh metod v tem vmesniku zagotavlja, da so imena metod univerzalna za vse zbirke. Zato lahko na kratko rečemo, da ta vmesnik gradi osnovo, na kateri so implementirani razredi zbirke.
3. Seznam vmesnika
To je podrejeni vmesnik vmesnika zbirke. Ta vmesnik je namenjen podatkom vrste seznama, v katerega lahko shranimo vse urejene zbirke objektov. To tudi omogoča, da so v njem prisotni podvojeni podatki. Ta vmesnik seznama izvajajo različni razredi, kot so ArrayList, Vector, Stack itd. Ker vsi podrazredi izvajajo seznam, lahko instanciramo objekt seznama s katerim koli od teh razredov.
Na primer:
List al = new ArrayList (); List ll = new LinkedList (); List v = new Vector (); Where T is the type of the object>
Razredi, ki izvajajo vmesnik List, so naslednji:
jaz). ArrayList
ArrayList nam ponuja dinamična polja v Javi. Čeprav je morda počasnejši od standardnih nizov, je lahko koristen v programih, kjer je potrebnih veliko manipulacij z nizom. Velikost seznama ArrayList se samodejno poveča, če se zbirka poveča, ali zmanjša, če se predmeti odstranijo iz zbirke. Java ArrayList nam omogoča naključen dostop do seznama. ArrayList ni mogoče uporabiti za ovojni razred za take primere.
Razumejmo ArrayList z naslednjim primerom:
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) + ' '); } }> |
>
>Izhod
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
ii). LinkedList
Razred LinkedList je implementacija Razumejmo LinkedList z naslednjim primerom:
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) + ' '); } }> |
>
>Izhod
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
iii). Vektor
Vektor nam nudi dinamična polja v Javi. Čeprav je morda počasnejši od standardnih nizov, je lahko koristen v programih, kjer je potrebnih veliko manipulacij z nizom. To je identično ArrayList v smislu implementacije. Vendar pa je primarna razlika med vektorjem in seznamom ArrayList ta, da je Vector sinhroniziran, seznam ArrayList pa nesinhroniziran.
Razumejmo vektor s primerom:
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) + ' '); } }> |
>
>Izhod
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
iv). Stack
Stack razred modelira in implementirazadnja prišla prva ven. Poleg osnovnih operacij potiskanja in izpiranja ponuja razred še tri funkcije: prazni, iskanje in pokukaj. Razred se lahko imenuje tudi podrazred vektorja.
Razumejmo sklad s primerom:
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() +>' '>);> >}> >}> }> |
>
>Izhod
Geeks For Geeks Geeks Geeks For Geeks>
Opomba: Sklad je podrazred vektorja in starejši razred. Je nitno varen, kar bi lahko pomenilo prevelike stroške v okolju, kjer nitna varnost ni potrebna. Alternativa Stacku je uporaba ArrayDequeue ki ni varen za niti in ima hitrejšo implementacijo polja.
4. Vmesnik čakalne vrste
Kot že ime pove, vmesnik čakalne vrste vzdržuje vrstni red FIFO (First In First Out), podoben dejanski čakalni vrsti. Ta vmesnik je namenjen shranjevanju vseh elementov, kjer je vrstni red elementov pomemben. Kadar koli na primer poskušamo rezervirati vstopnico, se vstopnice prodajajo po načelu kdor prvi pride, prvi melje. Karto torej dobi oseba, katere zahteva prva prispe v čakalno vrsto. Obstajajo različni razredi, kot so PriorityQueue , ArrayDeque , itd. Ker vsi ti podrazredi implementirajo čakalno vrsto, lahko objekt čakalne vrste ustvarimo s katerim koli od teh razredov.
Na primer:
Queue pq = new PriorityQueue (); Queue ad = new ArrayDeque (); Where T is the type of the object.>
Najpogosteje uporabljena izvedba vmesnika čakalne vrste je PriorityQueue.
Prednostna čakalna vrsta
PriorityQueue se uporablja, ko naj bi se objekti obdelali na podlagi prioritete. Znano je, da čakalna vrsta sledi algoritmu First-In-First-Out, včasih pa je treba elemente čakalne vrste obdelati glede na prioriteto in ta razred se uporablja v teh primerih. PriorityQueue temelji na prednostni kopici. Elementi prednostne vrste so urejeni po naravnem vrstnem redu ali po a Primerjalnik zagotovljeno v času gradnje čakalne vrste, odvisno od uporabljenega konstruktorja.
Razumejmo prednostno čakalno vrsto s primerom:
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());> >}> }> |
>
>Izhod
10 10 15>
5. In vmesnik
To je zelo majhna sprememba Na primer:
Deque ad = new ArrayDeque (); Where T is the type of the object.>
Razred, ki implementira vmesnik deque, je ArrayDeque.
ArrayDeque
Razred ArrayDeque, ki je implementiran v ogrodje zbiranja, nam omogoča uporabo matrike, ki jo je mogoče spreminjati. To je posebna vrsta niza, ki raste in omogoča uporabnikom, da dodajo ali odstranijo element z obeh strani čakalne vrste. Array deques nimajo omejitev glede zmogljivosti in rastejo, kot je potrebno, da podpirajo uporabo.
Razumejmo ArrayDeque s primerom:
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);> >}> }> |
>
>Izhod
[10, 20, 30, 40, 50] [291, 564, 24, 14]>
6. Nastavite vmesnik
Niz je neurejena zbirka objektov, v kateri ni mogoče shraniti podvojenih vrednosti. Ta zbirka se uporablja, ko se želimo izogniti podvajanju objektov in želimo shraniti le unikatne objekte. Ta vmesnik nabora izvajajo različni razredi, kot so HashSet, TreeSet, LinkedHashSet itd. Ker vsi podrazredi izvajajo nabor, lahko instanciramo objekt nabora s katerim koli od teh razredov.
Na primer:
Set hs = new HashSet (); Set lhs = new LinkedHashSet (); Set ts = new TreeSet (); Where T is the type of the object.>
Sledijo razredi, ki izvajajo vmesnik Set:
jaz). HashSet
Razred HashSet je neločljiva izvedba podatkovne strukture zgoščene tabele. Objekti, ki jih vstavimo v HashSet, ne zagotavljajo, da bodo vstavljeni v istem vrstnem redu. Predmeti so vstavljeni na podlagi njihove hashcode. Ta razred omogoča tudi vstavljanje elementov NULL. Razumejmo HashSet s primerom:
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());> >}> >}> }> |
>
>Izhod
Very helpful Geeks For Is>
ii). LinkedHashSet
LinkedHashSet je zelo podoben HashSet-u. Razlika je v tem, da za shranjevanje podatkov uporablja dvojno povezan seznam in ohranja vrstni red elementov.
Razumejmo LinkedHashSet s primerom:
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());> >}> >}> }> |
>
>Izhod
Geeks For Is Very helpful>
7. Vmesnik razvrščenega niza
Ta vmesnik je zelo podoben nastavljenemu vmesniku. Edina razlika je v tem, da ima ta vmesnik dodatne metode, ki ohranjajo vrstni red elementov. Vmesnik razvrščenega nabora razširja vmesnik nabora in se uporablja za obdelavo podatkov, ki jih je treba razvrstiti. Razred, ki izvaja ta vmesnik, je TreeSet. Ker ta razred implementira SortedSet, lahko s tem razredom instanciramo objekt SortedSet.
Na primer:
SortedSet ts = new TreeSet (); Where T is the type of the object.>
Razred, ki implementira vmesnik razvrščene množice, je TreeSet.
TreeSet
Razred TreeSet za shranjevanje uporablja drevo. Vrstni red elementov vzdržuje niz z uporabo njihovega naravnega vrstnega reda, ne glede na to, ali je zagotovljen izrecni primerjalnik ali ne. To mora biti skladno z enakimi, če želimo pravilno implementirati vmesnik Set. Naroči ga lahko tudi primerjalnik, ki je na voljo ob določenem času ustvarjanja, odvisno od uporabljenega konstruktorja.
Razumejmo TreeSet s primerom:
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());> >}> >}> }> |
>
>Izhod
For Geeks Is Very helpful>
8. Vmesnik zemljevida
Preslikava je podatkovna struktura, ki podpira par ključ-vrednost za preslikavo podatkov. Ta vmesnik ne podpira podvojenih ključev, ker isti ključ ne more imeti več preslikav, vendar dovoljuje podvojene vrednosti v različnih ključih. Zemljevid je uporaben, če obstajajo podatki in želimo izvajati operacije na podlagi ključa. Ta vmesnik zemljevida izvajajo različni razredi, kot je HashMap , TreeMap , itd. Ker vsi podrazredi implementirajo zemljevid, lahko instanciramo objekt zemljevida s katerim koli od teh razredov.
Na primer:
Map hm = new HashMap (); Map tm = new TreeMap (); Where T is the type of the object.>
Pogosto uporabljena izvedba vmesnika Map je HashMap.
HashMap
HashMap zagotavlja osnovno izvedbo vmesnika Map Java. Podatke shranjuje v parih (ključ, vrednost). Za dostop do vrednosti v HashMap moramo poznati njen ključ. HashMap uporablja tehniko, imenovano zgoščevanje. Zgoščevanje je tehnika pretvorbe velikega niza v majhen niz, ki predstavlja isti niz, tako da so operacije indeksiranja in iskanja hitrejše. HashSet interno uporablja tudi HashMap.
Razumejmo HashMap s primerom:
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());> >}> }> |
>
>Izhod
Value for 1 is Geeks 1 Geeks 2 For 3 Geeks>