treemap java tutorial with java treemap examples
Ta vaja Java TreeMap obravnava razred TreeMap, iteracijo, primere TreeMap, izvedbo, Java Hashmap vs Treemap, metode API-ja TreeMap itd.:
Podatkovna struktura TreeMap je zbirka, ki shranjuje pare ključ-vrednost v naravno razvrščenem vrstnem redu. TreeMap je del ogrodja zbirk Java in je izvedba zemljevida.
=> Tukaj preverite VSE Vadnice za Java.
Kaj se boste naučili:
Java TreeMap
Nekatere glavne značilnosti TreeMap v Javi so naslednje:
- Razred TreeMap, ki v Javi izvaja drevesno karto, je del paketa java.util. Izvaja vmesnik Map.
- Razred TreeMap razširja razred AbstractMap in izvaja tudi vmesnika NavigableMap in SortedMap (posredno).
- TreeMap ni sinhroniziran.
- Privzeto so elementi TreeMap privzeto v naraščajočem vrstnem redu.
- TreeMap ne dovoljuje podvojenih elementov.
- TreeMap omogoča ničelne vrednosti, ne pa tudi ničelnih ključev.
Spodnji diagram prikazuje hierarhijo razredov za razred TreeMap.
Kot smo že omenili, razred TreeMap izvaja vmesnik NavigableMap, ki pa razširja razred SortedMap. SortedMap nadalje podeduje vmesnik zemljevida.
Izjava razreda TreeMap
Splošna izjava razreda TreeMap je podana spodaj:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
kjer je K => vrsta ključev, ki jih vzdržuje TreeMap
V => vrsta preslikanih vrednosti
Primer TreeMap
Spodnji program prikazuje preprost primer podatkovne strukture TreeMap.
import java.util.*; class Main{ public static void main(String args()){ //declare a TreeMap and initialize it TreeMap cities_map=new TreeMap (); cities_map.put(100,'Pune'); cities_map.put(102,'Jaipur'); cities_map.put(101,'Hyderabad'); cities_map.put(103,'Bangaluru'); //print the TreeMap contents using forEach System.out.println('Contents of TreeMap:'); System.out.print('{'); for(Map.Entry entries:cities_map.entrySet()){ System.out.print(entries.getKey()+' = '+entries.getValue() + ' '); } System.out.println('}'); } }
Izhod:
Vsebina TreeMap:
{100 = Pune 101 = Hyderabad 102 = Jaipur 103 = Bangaluru}
V tem programu smo definirali preprost objekt TreeMap z imenom, cities_map, nato pa smo ga z metodo put inicializirali v pare ključ-vrednost.
Nato uporabimo metodo entrySet () razreda TreeMap in se skozi zanko preletimo z zanko forEach za tiskanje parov ključ-vrednost. Za tiskanje parov ključ / vrednost uporabljamo metodi getKey () in getValue ().
kako dodati niz nizu nizov
Metode in konstruktorji API-ja TreeMap
V tem poglavju bomo obravnavali različne konstruktorje in metode, ki jih ponuja razred TreeMap.
Konstruktorji
Prototip konstruktorja | Opis | |
---|---|---|
padajočeZemljevid | NavigableMap padajočaMap () | Vrne dane pare ključ / vrednost v obratnem vrstnem redu. |
TreeMap () | Privzeti konstruktor za ustvarjanje praznega TreeMap z naravnim urejanjem. | |
TreeMap (primerjalna primerjalna naprava) | Konstruira prazen TreeMap, ki je razvrščen na podlagi podanega primerjalnika. | |
TreeMap (zemljevid m) | Konstruira TreeMap in ga inicializira z elementi določenega zemljevida, m. Naročanje je naravno. | |
TreeMap (SortedMap m) | Konstruira TreeMap in ga inicializira z vnosi SortedMap. Naročanje je enako sortedMap. |
Metode
Metoda | Prototip metode | Opis |
---|---|---|
strop Vhod | Zemljevid.Vhodna zgornja mejaVstop (tipka K) | Vrne par ključ-vrednost najmanj, tako da je ključ večji ali enak določenemu ključu; nič, če ni ključa |
stropKljuč | K zgornji del Tipka (tipka K) | Vrne ključ, ki je najmanjši in večji od danega ključa; vrne nič, če ni ključa. |
jasno | prazno jasno () | Izbriše vse pare ključ-vrednost iz drevesne karte. |
klon | Klon predmeta () | Naredi plitvo kopijo primerka TreeMap. |
primerjalnik | Primerjalna primerjalna naprava () | Vrne primerjalnik, ki se uporablja za razporeditev tipk. nič, če je naročanje naravno |
descendingKeySet | NavigableSet descendingKeySet () | Vrne NavigableSet pogled na tipke TreeMap v obratnem vrstnem redu. |
firstEntry | Map.Entry firstEntry () | Vrne par najmanj ključ-vrednost. |
nadstropje Vhod | Map.Entry floorEntry (tipka K) | Vrne največji ključ, ki je manjši ali enak določenemu ključu; nič, če takega ključa ni |
za vsakogar | void forEach (BiConsumer action) | Dano dejanje se izvede za vsak vnos v TreeMap. |
headMap | SortedMap headMap (K toKey) | Uporablja se za vrnitev para ključ-vrednost, tako da je vrnjeni ključ strogo manjši od toKey |
headMap | NavigableMap headMap (K toKey, vključno z logično vrednostjo) | Vrne pare ključ-vrednost tistih ključev, ki so manjši od toKey ali enaki, če je vključen. |
higherEntry | Map.Entry higherEntry (tipka K) | Vrne najmanjši ključ ali nič. Vrnjeni ključ je strogo večji od danega ključa. |
višjiKljuč | K višjiKljuč (tipka K) | Vrne ključ, če je preslikava prisotna za dani ključ v drevesnem zemljevidu. |
keySet | Nastavi keySet () | Vrne zbirko nastavljenih ključev v TreeMap. |
lastEntry | Map.Entry lastEntry () | Vrne par ključ-vrednost tako, da je ključ največji ključ. Vrne nič, če ključ ne obstaja. |
lowerEntry | Map.Entry lowerEntry (tipka K) | Vrne par ključ-vrednost tako, da je ključ največji in strogo manjši od danega ključa. Vrne nič, če ključ ne obstaja. |
lowerKey | K spodnji ključ (tipka K) | Vrne največji ključ ali nič. Vrnjeni ključ je strogo manjši od danega ključa. |
navigableKeySet | NavigableSet navigableKeySet () | Vrne 'NavigableSet' tipk v TreeMap. |
pollFirstEntry | Map.Entry anketaFirstEntry () | Odstrani in nato vrne par ključ-vrednost najmanjšega ključa. |
pollLastEntry | Map.Entry anketaLastEntry () | Odstrani in vrne par ključ-vrednost največjega ključa. |
dal | V pot (tipka K, vrednost V) | Dodaja ključ in vrednost TreeMap. |
putAll | void putAll (zemljevid zemljevida) | Vsi pari ključ / vrednost z danega zemljevida se kopirajo v TreeMap. |
zamenjati | V zamenjava (tipka K, vrednost V) | Nadomešča ali spreminja vrednost danega ključa z dano vrednostjo. |
zamenjati | logična zamenjava (tipka K, V oldValue, V newValue) | Nadomešča oldValue danega ključa z newValue. |
replaceAll | void replaceAll (funkcija BiFunction) | Pokliče dano funkcijo in nadomesti vse vnose z rezultatom funkcije. |
podZemlja | Podkarta NavigableMap (K fromKey, logična vrednost odInclusive, K toKey, logična vrednost doInclusive) | Vrne pare ključ-vrednost ključev iz 'fromKey' v 'toKey'. |
SortedMap | Podkarta SortedMap (K fromKey, K toKey) | Vrne pare ključ-vrednost za obseg odKljuč (vključno) do Ključ (izključno). |
tailMap | SortedMap tailMap (K fromKey) | Vrne pare ključ / vrednost, tako da so ključi večji ali enaki odKey. |
tailMap | NavigableMap tailMap (K fromKey, vključno z logično vrednostjo) | Vrne pare ključ / vrednost za ključe, enake fromKey (vključno = true) ali večje od fromKey. |
vsebujeKljuč | boolean containsKey (tipka predmeta) | Preveri, ali je v danem ključu v zemljevidu drevesa preslikava. Vrne true, če da. |
vsebujeVrednost | boolean containsValue (vrednost predmeta) | Preveri, ali je ključ preslikan z dano vrednostjo. Vrne da, če je res. |
firstKey | K firstKey () | Vrne najnižji ali prvi ključ na razvrščenem zemljevidu |
dobili | V get (tipka predmeta) | Pridobi vrednost, preslikano na dani ključ |
lastKey | K lastKey () | Vrne zadnji ali najvišji ključ na razvrščenem zemljevidu. |
Odstrani | V odstrani (tipka predmeta) | Izbriše par ključ-vrednost za dani ključ v TreeMap |
entrySet | Nastavite | Vrne nabor za dani TreeMap. |
velikost | velikost int () | Vrne velikost ali skupno število parov ključ-vrednost v TreeMap. |
vrednote | Vrednosti zbirke () | Vrne zbirko vrednosti za TreeMap. |
Ponavljanje skozi TreeMap
TreeMap je sestavljen iz parov ključ-vrednost. Razred TreeMap ponuja metodo ‘entrySet’, ki na zemljevidu vrne pare ključ / vrednost. Te vnose lahko ponavljamo z uporabo zanke forEach in prikazovalne tipke in vrednosti z uporabo metod getKey () in getValue ().
To je prikazano v spodnjem programu Java:
import java.util.Map; import java.util.TreeMap; class Main { public static void main(String() arg){ //declare and initialize TreeMap Map colorsTree = new TreeMap(); colorsTree.put('R', 'Red'); colorsTree.put('G', 'Green'); colorsTree.put('B', 'Blue'); colorsTree.put('M', 'Magenta'); System.out.println('The contents of TreeMap:'); // retrieve set of map entries using entrySet method for (Map.Entry Map_entry : colorsTree.entrySet()) //print key-value pairs using getKey() and getValue() System.out.println( '(' + Map_entry.getKey() + '=>' + Map_entry.getValue() + ')'); } }
Izhod:
Vsebina TreeMap:
(B => modra)
(G => Zelena)
(M => magenta)
(R => Rdeča)
Izvedba TreeMap v Javi
Naslednji program Java prikazuje glavno metodo zgoraj obravnavanega razreda TreeMap.
import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class Main { public static void main(String() args) { //declare a TreeMap Object and initialize it with values TreeMap map = new TreeMap<>(); for(int i=1;i<=10;i++) { map.put(i, (i*i)+''); } System.out.println('Original Map:' + map); //lowerEntry, higherEntry Entry entry = map.lowerEntry(4); System.out.println('Closest Lower Entry than 4:'+entry); entry = map.higherEntry(4); System.out.println('Closest Higher Entry than 4:'+entry); System.out.println('Closest Lower key than 4 :'+map.lowerKey(4)); entry = map.floorEntry(6); System.out.println('Closest floor entry than 6: '+entry); entry = map.ceilingEntry(6); System.out.println('Closest ceiling Entry than 6 :'+entry); entry = map.firstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.lastEntry(); System.out.println('TreeMap Last Entry:'+entry); Map reversedMap = map.descendingMap(); System.out.println('Reversed TreeMap: '+reversedMap); //pollFirstEntry, pollLastEntry entry = map.pollFirstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.pollLastEntry(); System.out.println('TreeMap Last Entry:'+entry); //subMap Map subMap = map.subMap(2, true, 6, true); System.out.println('Submap from 2 to 6: '+subMap); //headMap subMap = map.headMap(5, true); System.out.println('HeadMap: '+subMap); //tailMap subMap = map.tailMap(5, true); System.out.println('TailMap: '+subMap); } }
Izhod:
Prvotni zemljevid: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Najbližji spodnji vstop kot 4: 3 = 9
Najbližji višji vstop kot 4: 5 = 25
Najbližja spodnja tipka kot 4: 3
Najbližji vhod od 6: 6 = 36
Najbližji strop Vstop kot 6: 6 = 36
TreeMap Prvi vnos: 1 = 1
TreeMap Zadnji vnos: 10 = 100
Obrnjen drevesni zemljevid: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
TreeMap Prvi vnos: 1 = 1
TreeMap Zadnji vnos: 10 = 100
Podmapa od 2 do 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
Glava: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
TailMap: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Razvrsti TreeMap po vrednosti
Privzeto je TreeMap razvrščen glede na tipke po naravnem vrstnem redu. Če pa želimo TreeMap razvrstiti glede na vrednosti, moramo za določanje razvrščanja uporabiti primerjalnik.
Spodnji program Java razvrsti TreeMap po vrednosti.
import java.util.*; class Main { //Method for sorting the TreeMap based on values public static > Map sortTreeMap(final Map map) { //define a comaprator to sort TreeMap on values Comparator valueComparator = new Comparator() { public int compare(K k1, K k2) { int compare = map.get(k1).compareTo(map.get(k2)); if (compare == 0) return 1; else return compare; } }; //use the comparator to sort the TreeMap and return sortedTreeMap Map sortedTreeMap = new TreeMap(valueComparator); sortedTreeMap.putAll(map); return sortedTreeMap; } public static void main(String args()) { //define and initialize the TreeMap TreeMap treemap = new TreeMap(); treemap.put('R', 'Red'); treemap.put('G', 'Green'); treemap.put('B', 'Blue'); treemap.put('C', 'Cyan'); treemap.put('M', 'Magenta'); // call method sortTreeMap to sort the TreeMap Map sortedTreeMap = sortTreeMap(treemap); // Retrieve set of the entries on the sorted map Set set = sortedTreeMap.entrySet(); System.out.println('The sorted TreeMap based on Values:'); // Now define iterator on this set Iterator i = set.iterator(); // Print TreeMap elements while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ': '); System.out.println(me.getValue()); } } }
Izhod:
Razvrščeni TreeMap na podlagi vrednosti:
B: modra
C: Cyan
G: Zelena
M: Magenta
R: Rdeča
Java Hashmap vs Treemap
Poglejmo nekaj glavnih razlik med HashMapom in TreeMapom.
Spodnja tabela prikazuje te razlike.
HashMap | TreeMap |
---|---|
HashMap je veliko hitrejši od TreeMap. | TreeMap je počasnejši |
Izvaja vmesnik Map. | Izvaja vmesnik NavigableMap. |
Uporablja tehniko izvajanja zgoščevanja | Za izvedbo uporabite rdeče-črno drevo |
Ne vzdržuje nobenega vrstnega reda, ki vsebuje elemente | Ključi v drevesnem zemljevidu so že naročeni po naravnem naročilu |
Omogoča en null ključ in veliko ničelnih vrednosti | Omogoča samo ničelne vrednosti, ključi pa ne smejo biti nični |
Opravlja osnovne operacije, postavlja in dobi v nenehnem času. | Vzemite si dnevnik (n) čas za izvedbo operacij dajanja in pridobivanja |
HashMap ima omejeno funkcionalnost. | Razred TreeMap ponuja veliko dodatnih funkcij, ki nam pomagajo pri manipulaciji s podatkovno strukturo. |
Za primerjavo uporablja metodo equals (). | Za primerjavo uporablja metodo compareTo (). |
Pogosto zastavljena vprašanja
V # 1) Kaj je TreeMap v Javi?
Odgovor: TreeMap v Javi je zbirka parov ključ-vrednost, ki so že razvrščeni. Za namene izvajanja uporablja rdeče-črno drevo. Java TreeMap poleg vmesnika Map izvaja vmesnik NavigableMap in razširja tudi razred AbstractMap.
Q # 2) Zakaj v Java uporabljamo TreeMap?
Odgovor: TreeMap se v Javi uporablja za izvajanje vmesnikov Map in NavigableMap ter razreda AbstractMap. Ker so tipke TreeMap razvrščene po naravnem vrstnem redu, lahko to podatkovno strukturo uporabimo za shranjevanje strukture imenikov, drevesnih hierarhij itd.
Q # 3) Kaj je boljše - HashMap ali TreeMap?
Odgovor: HashMap je boljši od TreeMap. HashMap za izvajanje osnovnih operacij vedno potrebuje konstanten čas, medtem ko TreeMap za izvajanje teh operacij potrebuje log (n) čas. Ko gre za večje podatkovne objekte, deluje HashMap hitreje v primerjavi z TreeMapom.
Q # 4) Ali je TreeMap razvrščen?
Odgovor: Da, ključni vnosi v TreeMap so razvrščeni po naravnem vrstnem redu. Razred TreeMap nam omogoča tudi uporabo primerjalnika po meri za razvrščanje TreeMap glede na vrednosti.
V # 5) Ali je TreeMap varno pred nitmi?
Odgovor: Ne, TreeMap ni zbirka, ki ni varna za nit.
kako razglasiti niz nizov v javi
Zaključek
V tej vadnici smo podrobno obravnavali TreeMap v Javi. TreeMap je zbirka parov ključ / vrednost, ki izvaja vmesnik zemljevida. Izvaja tudi vmesnik NavigableMap. Elementi TreeMap so edinstveni in dvojniki niso dovoljeni.
Videli smo konstruktorje in metode TreeMap. Izvedli smo tudi program TreeMap in prikazali glavne metode razreda TreeMap. Nato smo razpravljali o razlikah med HashMap in TreeMap.
=> Obiščite tukaj, da si ogledate serijo Java Training for All.
Priporočeno branje
- TreeSet v Javi: Vadnica s primeri programiranja
- Binarno drevo iskanja v Javi - primeri izvedbe in kode
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Java String vsebuje () Vadnico metode s primeri
- Kaj je Java Vector | Vadnica Java Vector Class s primeri
- Nazobčan niz v Javi - Vadnica s primeri
- Vadnica razreda Java Scanner Class z primeri
- Vadnica za Java String | Nizovske metode Java s primeri