treemap java tutorial with java treemap examples
Ovaj vodič za Java TreeMap raspravlja o klasi TreeMap, iteraciji, primjerima TreeMap-a, implementaciji, Java Hashmap-u vs Treemap-u, TreeMap API metodama itd .:
Struktura podataka TreeMap zbirka je koja sprema parove ključ / vrijednost u prirodno poredanom redoslijedu. Karta stabla dio je okvira Java Collections Framework i implementacija je mape.
=> Ovdje provjerite SVE Java tutorijale.
Što ćete naučiti:
Java TreeMap
Neke od glavnih karakteristika TreeMap-a u Javi su sljedeće:
- Klasa TreeMap koja implementira mapu drveta u Javi dio je paketa java.util. Provodi sučelje Map.
- Klasa TreeMap proširuje klasu AbstractMap i također implementira sučelje NavigableMap i SortedMap (neizravno).
- TreeMap nije sinkroniziran.
- Prema zadanim postavkama, elementi TreeMap prema zadanim postavkama imaju uzlazni redoslijed.
- TreeMap ne dopušta duplicirane elemente.
- TreeMap omogućuje null vrijednosti, ali ne i null ključeve.
Dijagram ispod prikazuje hijerarhiju klase za klasu TreeMap.
Kao što je već spomenuto, klasa TreeMap implementira sučelje NavigableMap koje zauzvrat proširuje klasu SortedMap. SortedMap dalje nasljeđuje sučelje karte.
Deklaracija klase TreeMap
Opća deklaracija klase TreeMap dana je u nastavku:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
gdje je K => vrsta ključeva koje održava TreeMap
V => vrsta preslikanih vrijednosti
Primjer TreeMap
Program u nastavku prikazuje jednostavan primjer strukture podataka 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('}'); } }
Izlaz:
Sadržaj TreeMap:
{100 = Pune 101 = Hyderabad 102 = Jaipur 103 = Bangaluru}
U ovom smo programu definirali jednostavan objekt TreeMap s imenom, cities_map, a zatim smo ga metodom put inicijalizirali u parove ključ / vrijednost.
Zatim koristimo metodu entrySet () klase TreeMap i iteriramo preko ovog skupa koristeći forEach petlju za ispis parova ključ / vrijednost. Za ispis parova ključ / vrijednost koristimo metode getKey () i getValue ().
to help desk pitanja i odgovori pdf
TreeMap API metode i konstruktori
U ovom ćemo odjeljku razgovarati o različitim konstruktorima i metodama koje pruža klasa TreeMap.
Konstruktori
Prototip konstruktora | Opis | |
---|---|---|
silaznaKarta | NavigableMap padajućaKarta () | Vraća zadane parove ključ / vrijednost obrnutim redoslijedom. |
Karta stabla () | Zadani konstruktor za stvaranje prazne TreeMap s prirodnim redoslijedom. | |
TreeMap (komparator za usporedbu) | Konstruira praznu TreeMap koja se sortira na temelju navedenog usporednika. | |
Karta stabla (karta m) | Konstruira TreeMap i inicijalizira ga elementima navedene mape, m. Naručivanje je prirodno. | |
Karta drveta (Sortirana karta m) | Konstruira TreeMap i inicijalizira ga unosima SortedMap. Poredak je isti kao sortedMap. |
Metode
Metoda | Prototip metode | Opis |
---|---|---|
stropUlaz | Map.Ulazni stropUlaz (tipka K) | Vraća najmanje par ključ / vrijednost takav da je ključ veći ili jednak navedenom ključu; null ako nema ključa |
stropKljuč | K plafonKljuč (tipka K) | Vraća ključ koji je najmanji i veći od zadanog ključa; vraća nulu ako nema ključa. |
čisto | void clear () | Briše sve parove ključ / vrijednost s mape stabla. |
klon | Klon objekta () | Izrađuje plitku kopiju instance TreeMap. |
komparator | Usporednik za usporedbu () | Vraća usporednik koji se koristi za raspored ključeva. ništa ako je naručivanje prirodno |
silazniKljučni set | NavigableSet descendingKeySet () | Vraća NavigableSet prikaz tipki TreeMap u obrnutom redoslijedu. |
firstEntry | Map.Entry firstEntry () | Vraća par ključ / vrijednost. |
katUlaz | Map.Ulazni katUlaz (tipka K) | Vraća najveći ključ koji je manji ili jednak danom ključu; null ako nema takvog ključa |
za svakoga | void forEach (BiConsumer akcija) | Data se radnja izvodi za svaki unos u TreeMap. |
headMap | SortedMap headMap (K toKey) | Koristi se za vraćanje para ključ / vrijednost tako da je vraćeni ključ strogo manji od toKey |
headMap | NavigableMap headMap (K toKey, uključujući logičku vrijednost) | Vraća parove ključ / vrijednost onih ključeva koji su manji od toKey ili jednaki ako uključuju. |
višiUlaz | Map.Entry higherEntry (tipka K) | Vraća najmanji ključ ili nulu. Vraćeni ključ je strogo veći od zadanog ključa. |
višiKljuč | K višiKljuč (tipka K) | Vraća ključ ako je mapiranje prisutno za zadani ključ u mapi stabla. |
keySet | Postavi keySet () | Vraća skup skupova ključeva u TreeMap-u. |
lastEntry | Map.Entry lastEntry () | Vraća par ključ / vrijednost tako da je ključ najveći ključ. Vraća nulu ako ključ ne postoji. |
lowerEntry | Map.Entry lowerEntry (tipka K) | Vraća par ključ / vrijednost tako da je ključ najveći i strogo manji od zadanog ključa. Vraća nulu ako ključ ne postoji. |
donjiKljuč | K niži ključ (tipka K) | Vraća najveći ključ ili nulu. Vraćeni ključ je strogo manji od zadanog ključa. |
navigableKeySet | NavigableSet navigableKeySet () | Vraća 'NavigableSet' tipki na TreeMap-u. |
pollFirstEntry | Map.Entry anketaFirstEntry () | Uklanja i zatim vraća par ključ / vrijednost najmanjeg ključa. |
pollLastEntry | Map.Entry anketaLastEntry () | Uklanja i vraća par ključ / vrijednost najvećeg ključa. |
staviti | V put (tipka K, vrijednost V) | Dodaje dati ključ i vrijednost na TreeMap. |
staviSve | void putAll (karta na karti) | Svi parovi ključ / vrijednost s dane karte kopiraju se na TreeMap. |
zamijeniti | V zamjena (tipka K, vrijednost V) | Zamjenjuje ili mijenja vrijednost datog ključa zadanom vrijednošću. |
zamijeniti | logička zamjena (tipka K, V oldValue, V newValue) | Zamjenjuje oldValue datog ključa s newValue. |
zamjeni sve | void replaceAll (funkcija BiFunction) | Priziva zadanu funkciju i zamjenjuje sve unose rezultatom funkcije. |
podkarta | Podmapa NavigableMap (K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Vraća parove ključeva / vrijednosti ključeva iz 'fromKey' u 'toKey'. |
SortedMap | Podkarta sortirane karte (K odKey, K toKey) | Vraća parove ključ / vrijednost za raspon odKljuč (uključujući) do Ključ (ekskluzivno). |
tailMap | Sortirana karta rep karte (K odKljuč) | Vraća parove ključ / vrijednost tako da su ključevi veći ili jednaki fromKey. |
tailMap | NavigableMap tailMap (K odKey, uključujući logičku vrijednost) | Vraća parove ključ / vrijednost za ključeve jednake fromKey (uključujući = true) ili veće od fromKey. |
sadržiKljuč | boolean containsKey (ključ objekta) | Provjerava postoji li mapiranje za zadani ključ u mapi stabla. Vraća ako je da. |
sadržiVrijednost | boolean containsValue (vrijednost objekta) | Provjerava postoji li ključ mapiran s danom vrijednošću. Vraća da ako je istina. |
firstKey | K prviKljuč () | Vraća najniži ključ ili prvi ključ na razvrstanoj karti |
dobiti | V get (tipka objekta) | Dohvaća vrijednost mapiranu u zadani ključ |
lastKey | K lastKey () | Vraća zadnji ili najviši ključ na razvrstanoj karti. |
ukloniti | V uklanjanje (tipka objekta) | Briše par ključ / vrijednost za zadani ključ u TreeMap-u |
entrySet | Postavi | Vraća skup za danu TreeMap. |
veličina | veličina int () | Vraća veličinu ili ukupan broj parova ključ / vrijednost na TreeMap-u. |
vrijednosti | Vrijednosti zbirke () | Vraća zbirku vrijednosti za TreeMap. |
Iteracija kroz TreeMap
TreeMap se sastoji od parova ključ / vrijednost. Klasa TreeMap nudi metodu ‘entrySet’ koja vraća parove ključ / vrijednost na karti. Možemo se itirirati kroz ove unose pomoću forEach petlje i prikazati tipke i vrijednosti pomoću metoda getKey () i getValue ().
To je prikazano u donjem Java programu:
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() + ']'); } }
Izlaz:
Sadržaj TreeMap:
[B => Plava]
[G => Zeleno]
[M => magenta]
[R => Crveno]
Implementacija TreeMap-a u Javi
Sljedeći Java program prikazuje glavnu metodu klase TreeMap o kojoj smo gore raspravljali.
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); } }
Izlaz:
Izvorna karta: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Najbliži donji ulaz od 4: 3 = 9
Najbliži veći ulazak od 4: 5 = 25
Najbliži donji ključ od 4: 3
Najbliži ulaz od 6: 6 = 36
Najbliži strop Ulaz od 6: 6 = 36
TreeMap prvi unos: 1 = 1
TreeMap Posljednji unos: 10 = 100
Obrnuta karta stabla: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
TreeMap prvi unos: 1 = 1
TreeMap Posljednji unos: 10 = 100
Podmapa od 2 do 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
Karta glave: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
TailMap: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Poredaj stablo po vrijednosti
Prema zadanim postavkama TreeMap se sortira na temelju tipki prema prirodnom redoslijedu. Ali ako želimo sortirati TreeMap prema vrijednostima, tada moramo upotrijebiti usporednik za definiranje sortiranja.
Ispod navedeni Java program sortira TreeMap prema vrijednosti.
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()); } } }
Izlaz:
Sortirana TreeMap na temelju vrijednosti:
B: Plava
C: Cijan
G: Zelena
M: Magenta
R: Crvena
Java Hashmap vs Treemap
Pogledajmo neke od glavnih razlika između HashMap i TreeMap.
Donja tablica prikazuje ove razlike.
HashMap | TreeMap |
---|---|
HashMap je puno brži od TreeMap-a. | TreeMap je sporiji |
Provodi sučelje Map. | Provodi sučelje NavigableMap. |
Koristi tehniku primjene raspršivanja | Za provedbu upotrijebite crveno-crno stablo |
Ne održava redoslijed sadrži elemente | Ključevi u mapi stabla već su naručeni prema prirodnom redoslijedu |
Omogućuje jedan null ključ i mnogo null vrijednosti | Omogućuje samo null vrijednosti, ali tipke ne mogu biti null |
Obavlja osnovne operacije, stavlja i dobiva u stalnom vremenu. | Odvojite vrijeme dnevnika (n) za izvođenje operacija stavljanja i preuzimanja |
HashMap ima ograničenu funkcionalnost. | Klasa TreeMap nudi puno dodatnih funkcija koje nam pomažu u manipulaciji strukturom podataka. |
Za usporedbu koristi metodu equals (). | Za usporedbu koristi metodu compareTo (). |
Često postavljana pitanja
P # 1) Što je TreeMap u Javi?
Odgovor: TreeMap u Javi je zbirka parova ključ / vrijednost koji su već sortirani. U svrhe provedbe koristi crveno-crno stablo. Java TreeMap implementira sučelje NavigableMap, osim sučelja Map, a također proširuje klasu AbstractMap.
kako stvoriti lažni račun e-pošte
P # 2) Zašto koristimo TreeMap u Javi?
Odgovor: TreeMap se koristi u Javi za implementaciju sučelja Map i NavigableMap i klase AbstractMap. Kako su tipke TreeMap sortirane prema prirodnom redoslijedu, ovu strukturu podataka možemo koristiti za pohranu strukture direktorija, hijerarhije stabala itd.
3. pitanje) Što je bolje - HashMap ili TreeMap?
Odgovor: HashMap je bolji od TreeMap-a. HashMap-u je uvijek potrebno konstantno vrijeme za izvođenje osnovnih operacija, dok TreeMap-u treba log (n) vremena da izvrši ove operacije. Kada su uključeni veći podatkovni objekti, HashMap radi brže u usporedbi s TreeMapom.
P # 4) Je li TreeMap sortirano?
Odgovor: Da, ključni unosi u TreeMap sortirani su prema prirodnom redoslijedu. Klasa TreeMap također nam omogućuje upotrebu prilagođene usporedbe za sortiranje TreeMap-a na temelju vrijednosti.
5. pitanje) Je li TreeMap zaštićen niti?
Odgovor: Ne, TreeMap nije nit-sigurna kolekcija.
Zaključak
U ovom uputstvu detaljno smo razgovarali o TreeMap-u na Javi. TreeMap je zbirka parova ključ / vrijednost koja implementira sučelje karte. Također implementira sučelje NavigableMap. Elementi TreeMap-a jedinstveni su i nisu dopušteni duplikati.
Vidjeli smo konstruktore i metode TreeMapa. Također smo implementirali program TreeMap i pokazali glavne metode klase TreeMap. Zatim smo razgovarali o razlikama između HashMap i TreeMap.
=> Posjetite ovdje da biste vidjeli seriju Java treninga za sve.
Preporučena literatura
- TreeSet u Javi: Vodič s primjerima programiranja
- Binarno stablo pretraživanja u Javi - primjeri implementacije i koda
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala
- Java String sadrži () Vodič za metode s primjerima
- Što je Java Vector | Vodič za Java Vector Class s primjerima
- Nazubljeni niz u Javi - Vodič s primjerima
- Vodič za razred Java Scannera s primjerima
- Java String Vodič | Metode Java niza s primjerima