treemap java tutorial with java treemap examples
Tento výukový program Java TreeMap pojednává o TreeMap Class, Iteration, TreeMap examples, Implementation, Java Hashmap vs Treemap, TreeMap API Methods atd .:
Datová struktura TreeMap je kolekce, která ukládá páry klíč – hodnota v přirozeně seřazeném pořadí. TreeMap je součástí Java Collections Framework a je mapovou implementací.
=> Zkontrolujte VŠECHNY výukové programy Java zde.
Co se naučíte:
Java TreeMap
Některé z hlavních charakteristik TreeMap v Javě jsou následující:
- Třída TreeMap, která implementuje stromovou mapu v Javě, je součástí balíčku java.util. Implementuje rozhraní Map.
- Třída TreeMap rozšiřuje třídu AbstractMap a také implementuje rozhraní NavigableMap a SortedMap (nepřímo).
- TreeMap není synchronizován.
- Ve výchozím nastavení jsou prvky TreeMap ve výchozím nastavení ve vzestupném pořadí.
- TreeMap neumožňuje duplicitní prvky.
- TreeMap umožňuje nulové hodnoty, ale ne nulové klíče.
Níže uvedený diagram ukazuje hierarchii tříd pro třídu TreeMap.
Jak již bylo zmíněno, třída TreeMap implementuje rozhraní NavigableMap, které zase rozšiřuje třídu SortedMap. SortedMap dále dědí mapové rozhraní.
Deklarace třídy TreeMap
Obecná deklarace třídy TreeMap je uvedena níže:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
kde K => typ klíčů udržovaný TreeMap
V => typ mapovaných hodnot
Příklad TreeMap
Níže uvedený program ukazuje jednoduchý příklad datové struktury 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ýstup:
Obsah TreeMap:
{100 = Pune 101 = Hyderabad 102 = Jaipur 103 = Bangaluru}
V tomto programu jsme definovali jednoduchý objekt TreeMap s názvem city_map a pomocí metody put jsme jej inicializovali na páry klíč – hodnota.
Pak použijeme metodu entrySet () třídy TreeMap a iterujeme tuto sadu pomocí smyčky forEach k tisku párů klíč – hodnota. Pro tisk párů klíč – hodnota používáme metody getKey () a getValue ().
otázky pl rozhovoru založeného na scénáři pl sql
Metody a konstruktory API TreeMap
V této části probereme různé konstruktory a metody poskytované třídou TreeMap.
Konstruktéři
Prototyp konstruktoru | Popis | |
---|---|---|
sestupněMapa | NavigableMap descendingMap () | Vrátí dané páry klíč – hodnota v opačném pořadí. |
TreeMap () | Výchozí konstruktor pro vytvoření prázdné TreeMap s přirozeným uspořádáním. | |
TreeMap (komparátor komparátor) | Vytvoří prázdnou TreeMap, která je tříděna na základě zadaného komparátoru. | |
TreeMap (mapa m) | Vytvoří TreeMap a inicializuje jej s prvky určené mapy, m. Objednávání je přirozené. | |
TreeMap (SortedMap m) | Vytvoří TreeMap a inicializuje jej pomocí položek SortedMap. Objednávání je stejné jako seřazené mapy. |
Metody
Metoda | Metoda Prototyp | Popis |
---|---|---|
strop Vstup | Mapa. Vstupní strop Vstup (klávesa K) | Vrátí nejmenší pár klíč – hodnota, takže klíč je větší nebo roven zadanému klíči; null, pokud není žádný klíč |
stropKlíč | K strop klíč (klávesa K) | Vrátí klíč, který je nejméně a větší než daný klíč; vrátí null, pokud není žádný klíč. |
Průhledná | prázdnota clear () | Odstraní všechny páry klíč – hodnota z Treemap. |
klon | Klon objektu () | Vytvoří mělkou kopii instance TreeMap. |
komparátor | Komparátor komparátor () | Vrátí komparátor použitý k uspořádání kláves. null, pokud je objednávka přirozená |
descendingKeySet | NavigableSet descendingKeySet () | Vrátí NavigableSet pohled na klíče TreeMap v opačném pořadí. |
prvníVstup | Map.Entry firstEntry () | Vrátí nejmenší pár klíč – hodnota. |
floorEntry | Mapa. Vstupní podlaha Vstup (klávesa K) | Vrátí největší klíč, který je menší nebo roven danému klíči; null, pokud žádný takový klíč neexistuje |
pro každého | void forEach (BiConsumer action) | Daná akce se provádí pro každou položku v TreeMap. |
headMap | SortedMap headMap (K toKey) | Používá se k vrácení páru klíč-hodnota, takže vrácený klíč je přísně menší než toKey |
headMap | NavigableMap headMap (K toKey, boolean inclusive) | Vrátí páry klíč – hodnota těch klíčů, které jsou menší než toKey nebo rovno, pokud jsou zahrnuty. |
vyšší vstup | Mapa. Vstup vyšší Vstup (klávesa K) | Vrátí nejméně klíč nebo null. Vrácený klíč je přísně větší než daný klíč. |
vyšší klíč | K vyšší klíč (klávesa K) | Vrátí klíč, pokud existuje mapování pro daný klíč v Treemap. |
keySet | Set keySet () | Vrátí sadu kolekcí klíčů v TreeMap. |
lastEntry | Map.Entry lastEntry () | Vrátí pár klíč – hodnota, takže klíč je největší klíč. Vrátí hodnotu null, pokud klíč neexistuje. |
nižší vstup | Map.Entry lowerEntry (klávesa K) | Vrátí pár klíč – hodnota tak, že klíč je největší a přísně menší než daný klíč. Vrátí hodnotu null, pokud klíč neexistuje. |
lowerKey | K lowerKey (klávesa K) | Vrátí největší klíč nebo hodnotu null. Vrácený klíč je přísně menší než daný klíč. |
navigableKeySet | NavigableSet navigableKeySet () | Vrátí ‚NavigableSet 'klíčů v TreeMap. |
pollFirstEntry | Map.Entry pollFirstEntry () | Odebere a poté vrátí pár klíč – hodnota nejmenšího klíče. |
pollLastEntry | Map.Entry pollLastEntry () | Odstraní a vrátí pár klíč – hodnota největšího klíče. |
dát | V put (klíč K, hodnota V) | Přidá daný klíč a hodnotu do TreeMap. |
putAll | void putAll (Mapa mapy) | Všechny páry klíč – hodnota z dané mapy se zkopírují do TreeMap. |
nahradit | V nahradit (klávesa K, hodnota V) | Nahradí nebo změní hodnotu daného klíče danou hodnotou. |
nahradit | boolean replace (klíč K, V oldValue, V newValue) | Nahradí oldValue daného klíče newValue. |
vyměnit vše | void replaceAll (funkce BiFunction) | Vyvolá danou funkci a nahradí všechny položky výsledkem funkce. |
dílčí mapa | Podmapa NavigableMap (K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Vrátí páry klíč – hodnota klíčů z „fromKey“ do „toKey“. |
SortedMap | Submapa SortedMap (K fromKey, K toKey) | Vrátí páry klíč – hodnota pro rozsah odKey (včetně) do toKey (exkluzivní). |
tailMap | SortedMap tailMap (K fromKey) | Vrátí páry klíč – hodnota, takže klíče jsou větší nebo rovny fromKey. |
tailMap | NavigableMap tailMap (K fromKey, boolean inclusive) | Vrátí páry klíč – hodnota pro klíče rovné fromKey (včetně = true) nebo větší než fromKey. |
containsKey | boolean containsKey (klíč objektu) | Zkontroluje, zda existuje mapa pro daný klíč v Treemap. Vrátí true, pokud ano. |
containsValue | boolean containsValue (hodnota objektu) | Zkontroluje, zda je klíč mapován s danou hodnotou. Vrátí ano, pokud je to pravda. |
firstKey | K firstKey () | Vrátí nejnižší klíč nebo první klíč v seřazené mapě |
dostat | V get (klíč objektu) | Načte hodnotu namapovanou na daný klíč |
lastKey | K lastKey () | Vrátí poslední klíč nebo nejvyšší klíč na seřazené mapě. |
odstranit | V remove (klíč objektu) | Odstraní pár klíč – hodnota pro daný klíč v TreeMap |
entrySet | Soubor | Vrátí množinu pro danou TreeMapu. |
velikost | int velikost () | Vrátí velikost nebo celkový počet párů klíč – hodnota v TreeMap. |
hodnoty | Hodnoty kolekce () | Vrátí kolekci hodnot pro TreeMap. |
Iterace prostřednictvím TreeMap
TreeMap se skládá z párů klíč – hodnota. Třída TreeMap poskytuje metodu ‚entrySet ', která vrací páry klíč – hodnota na mapu. Tyto položky můžeme iterovat pomocí smyčky forEach a zobrazovat klíče a hodnoty pomocí metod getKey () a getValue ().
To se zobrazuje v níže uvedeném 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() + ')'); } }
Výstup:
Obsah TreeMap:
(B => modrá)
(G => Zelená)
(M => Purpurová)
(R => červená)
Implementace TreeMap v Javě
Následující program Java demonstruje hlavní metodu třídy TreeMap popsanou výše.
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ýstup:
Původní mapa: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Nejbližší nižší vstup než 4: 3 = 9
Nejbližší vyšší vstup než 4: 5 = 25
Nejbližší klíč nižší než 4: 3
Nejbližší vstup na podlahu než 6: 6 = 36
Nejbližší vstup na strop než 6: 6 = 36
TreeMap První položka: 1 = 1
Poslední položka TreeMap: 10 = 100
Obrácená stromová mapa: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
TreeMap První položka: 1 = 1
Poslední položka TreeMap: 10 = 100
Dílčí 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}
Seřadit TreeMap podle hodnoty
Ve výchozím nastavení je TreeMap seřazen podle klíčů podle přirozeného řazení. Pokud ale chceme TreeMap seřadit podle hodnot, musíme definovat řazení pomocí komparátoru.
Níže uvedený program Java třídí TreeMap podle 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ýstup:
Seřazená TreeMap na základě hodnot:
B: Modrá
C: Azurová
G: Zelená
M: Purpurová
R: Červená
Java Hashmap vs Treemap
Podívejme se na některé z hlavních rozdílů mezi HashMap a TreeMap.
Níže uvedená tabulka ukazuje tyto rozdíly.
HashMap | TreeMap |
---|---|
HashMap je mnohem rychlejší než TreeMap. | TreeMap je pomalejší |
Implementuje rozhraní mapy. | Implementuje rozhraní NavigableMap. |
Používá hashovací implementační techniku | K implementaci použijte červeno-černý strom |
Neudržuje žádné pořadí obsahující prvky | Klíče ve stromové mapě jsou již seřazeny podle přirozeného řazení |
Umožňuje jeden nulový klíč a mnoho nulových hodnot | Umožňuje pouze nulové hodnoty, ale klíče nemohou být nulové |
Provádí základní operace, umisťuje a získává v konstantním čase. | Udělejte čas (n) na provedení operací put a get |
HashMap má omezenou funkčnost. | Třída TreeMap poskytuje spoustu dalších funkcí, které nám pomáhají manipulovat s datovou strukturou. |
K porovnání používá metodu equals (). | Pro porovnání používá metodu compareTo (). |
Často kladené otázky
Otázka č. 1) Co je TreeMap v Javě?
Odpovědět: TreeMap v Javě je kolekce párů klíč – hodnota, které jsou již seřazeny. Pro účely implementace používá červeno-černý strom. Java TreeMap implementuje rozhraní NavigableMap kromě rozhraní Map a rozšiřuje také třídu AbstractMap.
Otázka č. 2) Proč používáme TreeMap v Javě?
Odpovědět: TreeMap se v Javě používá k implementaci rozhraní Map a NavigableMap a třídy AbstractMap. Protože jsou klíče TreeMap tříděny podle přirozeného řazení, můžeme tuto datovou strukturu použít k ukládání adresářové struktury, hierarchií stromů atd.
Otázka č. 3) Co je lepší - HashMap nebo TreeMap?
Odpovědět: HashMap je lepší než TreeMap. HashMap vždy trvá konstantní čas, než provede základní operace, zatímco TreeMap zabere log (n) čas, aby tyto operace provedl. Když se jedná o větší datové objekty, HashMap funguje rychleji ve srovnání s TreeMap.
Otázka č. 4) Je TreeMap seřazen?
jak spustit swf v chromu
Odpovědět: Ano, klíčové položky v TreeMap jsou seřazeny podle přirozeného řazení. Třída TreeMap nám také umožňuje použít vlastní komparátor k třídění TreeMap na základě hodnot.
Otázka č. 5) Je TreeMap bezpečný pro vlákna?
Odpovědět: Ne, TreeMap není kolekce bezpečná pro vlákna.
Závěr
V tomto kurzu jsme podrobně diskutovali o TreeMap v Javě. TreeMap je kolekce párů klíč – hodnota, která implementuje mapové rozhraní. Implementuje také rozhraní NavigableMap. Prvky TreeMap jsou jedinečné a nejsou povoleny žádné duplikáty.
Viděli jsme konstruktory a metody TreeMap. Také jsme implementovali program TreeMap a demonstrovali hlavní metody třídy TreeMap. Poté jsme diskutovali o rozdílech mezi HashMap a TreeMap.
=> Navštivte zde a prohlédněte si sérii školení Java pro všechny.
Doporučené čtení
- TreeSet v Javě: Výukový program s příklady programování
- Binární vyhledávací strom v Javě - příklady implementace a kódu
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Java String obsahuje () Výukový program metod s příklady
- Co je Java Vector | Výukový program Java Vector Class s příklady
- Jagged Array In Java - výukový program s příklady
- Výukový program třídy skeneru Java s příklady
- Výukový program Java String | Metody řetězců Java s příklady