treemap java tutorial with java treemap examples
Tento výukový program Java TreeMap pojednáva o triede TreeMap, iteráciách, príkladoch TreeMap, implementácii, Java Hashmap vs Treemap, metódach TreeMap API atď .:
Dátová štruktúra TreeMap je kolekcia, ktorá ukladá páry kľúč - hodnota v prirodzene zoradenom poradí. TreeMap je súčasťou Java Collections Framework a je mapovou implementáciou.
=> Skontrolujte VŠETKY návody Java tu.
Čo sa dozviete:
Java TreeMap
Niektoré z hlavných charakteristík TreeMap v Jave sú:
- Trieda TreeMap, ktorá implementuje stromovú mapu v Jave, je súčasťou balíka java.util. Implementuje rozhranie Mapy.
- Trieda TreeMap rozširuje triedu AbstractMap a tiež implementuje rozhranie NavigableMap a SortedMap (nepriamo).
- TreeMap nie je synchronizovaný.
- V predvolenom nastavení sú prvky TreeMap predvolene vzostupne.
- TreeMap neumožňuje duplicitné prvky.
- TreeMap umožňuje nulové hodnoty, ale nie nulové kľúče.
Nasledujúci diagram zobrazuje hierarchiu tried pre triedu TreeMap.
Ako už bolo spomenuté, trieda TreeMap implementuje rozhranie NavigableMap, ktoré zase rozširuje triedu SortedMap. SortedMap ďalej dedí mapové rozhranie.
Deklarácia triedy TreeMap
Všeobecné vyhlásenie triedy TreeMap je uvedené nižšie:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
kde K => typ kľúčov udržiavaných pomocou TreeMap
V => typ mapovaných hodnôt
Príklad TreeMap
Nasledujúci program zobrazuje jednoduchý príklad dátovej štruktúry 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('}'); } }
Výkon:
Obsah TreeMap:
{100 = Pune 101 = Hyderabad 102 = Jaipur 103 = Bangaluru}
V tomto programe sme definovali jednoduchý objekt TreeMap s názvom city_map a pomocou metódy put sme ho potom inicializovali na páry kľúč - hodnota.
Potom použijeme metódu entrySet () triedy TreeMap a cez túto množinu iterujeme pomocou slučky forEach, aby sme vytlačili páry kľúč - hodnota. Na tlač párov kľúč - hodnota používame metódy getKey () a getValue ().
čo je uat v testovaní softvéru
Metódy a konštruktory API TreeMap
V tejto časti si rozoberieme rôzne konštruktory a metódy poskytované triedou TreeMap.
Konštruktéri
Prototyp konštruktéra | Popis | |
---|---|---|
zostupneMapa | NavigableMap descendingMap () | Vráti dané páry kľúč - hodnota v opačnom poradí. |
TreeMap () | Predvolený konštruktor na vytvorenie prázdnej TreeMap s prirodzeným usporiadaním. | |
TreeMap (komparátor komparátor) | Vytvorí prázdnu TreeMapu, ktorá je zoradená na základe zadaného komparátora. | |
TreeMap (mapa m) | Vytvorí mapu stromu a inicializuje ju prvkami určenej mapy, m. Objednávanie je prirodzené. | |
TreeMap (SortedMap m) | Vytvorí mapu stromu a inicializuje ju položkami SortedMap. Objednávanie je rovnaké ako triedená mapa. |
Metódy
Metóda | Metóda Prototyp | Popis |
---|---|---|
stropVstup | Mapa. Vstupný strop Vstup (klávesa K) | Vráti najmenší pár kľúč - hodnota tak, aby kľúč bol väčší alebo rovný zadanému kľúču; null, ak nie je žiadny kľúč |
stropKey | K stropný kľúč (kláves K) | Vráti kľúč, ktorý je najmenší a väčší ako daný kľúč; vráti hodnotu null, ak nie je k dispozícii žiadny kľúč. |
jasný | prázdne miesto jasné () | Odstráni všetky páry kľúč - hodnota z Treemap. |
klon | Klon objektu () | Vytvorí plytkú kópiu inštancie TreeMap. |
komparátor | Komparátor komparátor () | Vráti komparátor použitý na usporiadanie klávesov. null, ak je objednávka prirodzená |
descendingKeySet | NavigableSet descendingKeySet () | Vráti NavigableSet zobrazenie klávesov TreeMap v opačnom poradí. |
prvýVstup | Mapa. Vstup prvý Vstup () | Vráti najmenší pár kľúč - hodnota. |
floorEntry | Mapa. Vstupná podlaha Vstup (klávesa K) | Vráti najväčší kľúč, ktorý je menší alebo rovný danému kľúču; null, ak taký kľúč neexistuje |
pre každý | void forEach (BiConsumer action) | Daná akcia sa vykoná pre každú položku v TreeMap. |
headMap | SortedMap headMap (K toKey) | Používa sa na vrátenie páru kľúč - hodnota tak, že vrátený kľúč je striktne menší ako toKey |
headMap | NavigableMap headMap (K toKey, boolean inclusive) | Vráti páry kľúč - hodnota tých kľúčov, ktoré sú menšie ako toKey alebo rovnaké, ak sú vrátane. |
vyšší vstup | Mapa. Zadajte vyšší vstup (kláves K) | Vráti najmenej kľúč alebo hodnotu null. Vrátený kľúč je striktne väčší ako daný kľúč. |
vyššíKey | K vyššie tlačidlo (kláves K) | Vráti kľúč, ak existuje mapovanie pre daný kľúč v Treemap. |
keySet | Set keySet () | Vráti množinu súborov kľúčov v TreeMap. |
lastEntry | Map.Entry lastEntry () | Vráti pár kľúč - hodnota tak, že kľúč je najväčší. Ak kľúč neexistuje, vráti hodnotu null. |
lowerEntry | Mapa. Zadajte nižší vstup (kláves K) | Vráti pár kľúč - hodnota tak, aby bol kľúč najväčší a striktne menší ako daný kľúč. Ak kľúč neexistuje, vráti hodnotu null. |
lowerKey | K lowerKey (klávesa K) | Vráti najväčší kľúč alebo hodnotu null. Vrátený kľúč je striktne menší ako daný kľúč. |
navigableKeySet | NavigableSet navigableKeySet () | Vráti „NavigableSet“ klávesov v TreeMap. |
pollFirstEntry | Mapa.Vstupná anketaFirstEntry () | Odstráni a potom vráti pár kľúč - hodnota najmenšieho kľúča. |
pollLastEntry | Map.Entry pollLastEntry () | Odstráni a vráti dvojicu kľúč - hodnota najväčšieho kľúča. |
dať | V put (kľúč K, hodnota V) | Pridá daný kľúč a hodnotu do TreeMap. |
putAll | void putAll (Mapa mapa) | Všetky páry kľúč - hodnota z danej mapy sa skopírujú do TreeMap. |
vymeniť | V nahradiť (kláves K, hodnota V) | Nahradí alebo zmení hodnotu daného kľúča s danou hodnotou. |
vymeniť | boolovská zámena (kláves K, V oldValue, V newValue) | Nahradí oldValue daného kľúča newValue. |
nahradiť všetko | void replaceAll (funkcia BiFunction) | Vyvolá danú funkciu a všetky záznamy nahradí výsledkom funkcie. |
čiastková mapa | Submapa NavigableMap (K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Vráti páry kľúč - hodnota z „fromKey“ do „toKey“. |
SortedMap | Submapa SortedMap (K odKey, K poKey) | Vráti páry kľúč - hodnota pre rozsah odKey (vrátane) do toKey (exclusive). |
tailMap | SortedMap tailMap (K fromKey) | Vráti páry kľúč - hodnota tak, že kľúče sú väčšie alebo rovnaké ako fromKey. |
tailMap | NavigableMap tailMap (K fromKey, boolean inclusive) | Vráti páry kľúč - hodnota pre kľúče rovné od fromKey (vrátane = true) alebo väčšie ako od fromKey. |
obsahujeKey | boolean containsKey (kľúč objektu) | Skontroluje, či existuje mapovanie daného kľúča v Treemape. Ak áno, vráti hodnotu true. |
containsValue | boolean containsValue (hodnota objektu) | Skontroluje, či existuje kľúč mapovaný s danou hodnotou. Vráti áno, ak je to pravda. |
firstKey | K firstKey () | Vráti najnižší kľúč alebo prvý kľúč v zoradenej mape |
dostať | V get (kľúč objektu) | Načíta hodnotu namapovanú na daný kľúč |
lastKey | K lastKey () | Vráti posledný alebo najvyšší kľúč v zoradenej mape. |
odstrániť | V remove (kľúč objektu) | Vymaže pár kľúč - hodnota pre daný kľúč v TreeMap |
entrySet | Nastaviť | Vráti množinu pre danú TreeMapu. |
veľkosť | veľkosť int () | Vráti veľkosť alebo celkový počet párov kľúč - hodnota v TreeMap. |
hodnoty | Hodnoty zbierky () | Vráti kolekciu hodnôt pre TreeMap. |
Iterácia cez TreeMap
TreeMap sa skladá z párov kľúč - hodnota. Trieda TreeMap poskytuje metódu ‘entrySet’, ktorá vracia páry kľúč - hodnota na mapu. Tieto položky môžeme iterovať pomocou slučky forEach a klávesov a hodnôt displeja pomocou metód getKey () a getValue ().
Toto je zobrazené v nasledujúcom programe 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() + ')'); } }
Výkon:
Obsah TreeMap:
(B => modrá)
(G => zelená)
(M => Purpurová)
(R => červená)
Implementácia TreeMap v Jave
Nasledujúci program Java demonštruje hlavnú metódu triedy TreeMap diskutovanú vyššie.
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); } }
Výkon:
Pôvodná mapa: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Najbližší nižší vstup ako 4: 3 = 9
Najbližší vyšší vstup ako 4: 5 = 25
Najbližšie Dolný kľúč ako 4: 3
Najbližší vstup na poschodie ako 6: 6 = 36
Najbližší strop Vstup ako 6: 6 = 36
TreeMap Prvý záznam: 1 = 1
Posledná položka TreeMap: 10 = 100
Obrátená mapa stromov: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
TreeMap Prvý záznam: 1 = 1
Posledná položka TreeMap: 10 = 100
Čiastková mapa od 2 do 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
HeadMap: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
TailMap: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
selenium webdriver rozhovor otázky a odpovede
Zoradiť TreeMap podľa hodnoty
TreeMap je predvolene triedený na základe klávesov podľa prirodzeného usporiadania. Ak ale chceme triediť TreeMapu podľa hodnôt, musíme na definovanie triedenia použiť komparátor.
Nižšie uvedený program Java triedi TreeMap podľa hodnoty.
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()); } } }
Výkon:
Zoradená TreeMap na základe hodnôt:
B: Modrá
C: Azúrová
G: Zelená
M: Purpurová
R: Červená
Java Hashmap vs Treemap
Pozrime sa na niektoré z hlavných rozdielov medzi mapami HashMap a TreeMap.
Nasledujúca tabuľka ukazuje tieto rozdiely.
HashMap | TreeMap |
---|---|
HashMap je oveľa rýchlejší ako TreeMap. | TreeMap je pomalší |
Implementuje rozhranie Mapy. | Implementuje rozhranie NavigableMap. |
Používa hashovaciu implementačnú techniku | Na implementáciu použite červeno-čierny strom |
Neudržiava žiadne poradie obsahovania prvkov | Kľúče v stromovej mape sú už zoradené podľa prirodzeného usporiadania |
Umožňuje jeden nulový kľúč a veľa nulových hodnôt | Umožňuje iba nulové hodnoty, ale kľúče nemôžu byť nulové |
Vykonáva základné operácie, dáva a dostane sa v konštantnom čase. | Na vykonanie operácií put and get si urobte čas (n) |
HashMap má obmedzenú funkčnosť. | Trieda TreeMap poskytuje mnoho ďalších funkcií, ktoré nám pomáhajú manipulovať s dátovou štruktúrou. |
Používa na porovnanie metódu equals (). | Používa na porovnanie metódu compareTo (). |
často kladené otázky
Otázka 1) Čo je TreeMap v Jave?
Odpoveď: TreeMap v Jave je kolekcia párov kľúč - hodnota, ktoré sú už zoradené. Na účely implementácie používa červeno-čierny strom. Java TreeMap implementuje rozhranie NavigableMap okrem rozhrania Map a rozširuje aj triedu AbstractMap.
Otázka č. 2) Prečo používame TreeMap v Jave?
Odpoveď: TreeMap sa v Jave používa na implementáciu rozhraní Map a NavigableMap a triedy AbstractMap. Pretože sú kľúče TreeMap zoradené podľa prirodzeného usporiadania, môžeme túto dátovú štruktúru použiť na ukladanie adresárovej štruktúry, hierarchií stromov atď.
Otázka č. 3) Čo je lepšie - HashMap alebo TreeMap?
Odpoveď: HashMap je lepší ako TreeMap. Programu HashMap trvá základné operácie vždy konštantný čas, zatiaľ čo aplikácii TreeMap trvá tieto operácie log (n). Ak sa jedná o väčšie dátové objekty, program HashMap pracuje v porovnaní s TreeMap rýchlejšie.
Otázka č. 4) Je TreeMap zoradený?
Odpoveď: Áno, kľúčové položky v TreeMap sú zoradené podľa prirodzeného poradia. Trieda TreeMap nám tiež umožňuje použiť vlastný komparátor na triedenie TreeMap na základe hodnôt.
Otázka č. 5) Je TreeMap bezpečný pre vlákna?
Odpoveď: Nie, TreeMap nie je kolekcia bezpečná pre vlákna.
Záver
V tomto tutoriáli sme sa podrobne venovali TreeMap v Jave. TreeMap je kolekcia párov kľúč - hodnota, ktorá implementuje mapové rozhranie. Implementuje tiež rozhranie NavigableMap. Prvky TreeMap sú jedinečné a nie sú povolené žiadne duplikáty.
Videli sme konštruktory a metódy TreeMap. Implementovali sme tiež program TreeMap a demonštrovali sme hlavné metódy triedy TreeMap. Potom sme diskutovali o rozdieloch medzi HashMap a TreeMap.
=> Navštívte tu a pozrite si sériu školení Java pre všetkých.
Odporúčané čítanie
- TreeSet v Jave: Výukový program s príkladmi programovania
- Binárny vyhľadávací strom v prostredí Java - príklady implementácie a kódu
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Java String obsahuje () Výukový program metód s príkladmi
- Čo je Java Vector | Výukový program Java Vector Class s príkladmi
- Jagged Array In Java - návod s príkladmi
- Výukový program triedy skenerov Java s príkladmi
- Výukový program pre Java String Metódy reťazca Java s príkladmi