treemap java tutorial with java treemap examples
Aquest tutorial de Java TreeMap tracta la classe TreeMap, la iteració, els exemples TreeMap, la implementació, Java Hashmap vs Treemap, els mètodes API TreeMap, etc.:
Una estructura de dades TreeMap és una col·lecció que emmagatzema parells clau-valor en un ordre ordenat de manera natural. Un TreeMap forma part del Java Collections Framework i és una implementació de mapes.
=> Consulteu TOTS els tutorials de Java aquí.
Què aprendreu:
Java TreeMap
Algunes de les principals característiques de TreeMap a Java són les següents:
- La classe TreeMap que implementa el treemap a Java forma part del paquet java.util. Implementa la interfície Map.
- La classe TreeMap amplia la classe AbstractMap i també implementa la interfície NavigableMap i SortedMap (indirectament).
- TreeMap no està sincronitzat.
- Per defecte, els elements TreeMap estan en ordre ascendent per defecte.
- TreeMap no permet elements duplicats.
- TreeMap permet valors nuls però no claus nul·les.
El diagrama següent mostra la jerarquia de classes de la classe TreeMap.
Com ja s'ha esmentat, la classe TreeMap implementa una interfície NavigableMap que al seu torn amplia la classe SortedMap. SortedMap encara hereta la interfície del mapa.
Declaració de classe TreeMap
A continuació es dóna la declaració general de la classe TreeMap:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
on K => tipus de claus mantingudes per TreeMap
V => tipus dels valors assignats
Exemple de mapa d'arbres
El programa següent mostra un exemple senzill d'una estructura de dades 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('}'); } }
Sortida:
Contingut de TreeMap:
{100 = Pune 101 = Hyderabad 102 = Jaipur 103 = Bangaluru}
En aquest programa, hem definit un simple objecte TreeMap anomenat, cities_map, i després, mitjançant el mètode put, l’hem inicialitzat a parells clau-valor.
A continuació, fem servir el mètode entrySet () de la classe TreeMap i repetim aquest conjunt mitjançant un bucle forEach per imprimir els parells clau-valor. Per imprimir parells clau-valor, fem servir mètodes getKey () i getValue () respectivament.
implementant una cua de prioritat a Java
Mètodes i constructors de l'API TreeMap
En aquesta secció, parlarem dels diversos constructors i mètodes proporcionats per la classe TreeMap.
Constructors
Prototip de constructor | Descripció | |
---|---|---|
descendingMap | NavigableMap descendingMap () | Retorna els parells clau-valor donats en ordre invers. |
Mapa de l'arbre () | Constructor per defecte per crear un TreeMap buit amb ordre natural. | |
TreeMap (comparador comparador) | Construeix un TreeMap buit que s'ordena en funció del comparador especificat. | |
Mapa de l'arbre (mapa m) | Construeix un TreeMap i l'inicialitza amb els elements del mapa especificat, m. L’ordenació és natural. | |
Mapa d'arbre (mapa ordenat m) | Construeix un TreeMap i l'inicialitza amb entrades SortedMap. L’ordre és el mateix que sortedMap. |
Mètodes
Mètode | Mètode prototip | Descripció |
---|---|---|
sostreEntrada | Mapa Sostre d’entrada Entrada (tecla K) | Retorna el parell clau-valor menys tal que la clau sigui superior o igual a la clau especificada; nul si no hi ha cap clau |
sostre Clau | Sostre K Clau (tecla K) | Retorna la clau que és menor i major que la clau donada; torna nul si no hi ha cap tecla. |
clar | void clear () | Suprimeix tots els parells clau-valor del mapa de l'arbre. |
clonar | Clon d'objectes () | Fa una còpia superficial de la instància TreeMap. |
comparador | Comparador comparador () | Retorna un comparador utilitzat per organitzar les claus. nul si l'ordre és natural |
descendingKeySet | NavigableSet descendingKeySet () | Retorna la vista NavigableSet de les tecles de mapa d'arbre en ordre invers. |
primerEntrada | Map.Entry firstEntry () | Retorna el parell menys valor-clau. |
floorEntry | Mapa.Planta d’entrada Entrada (tecla K) | Retorna la clau més gran que és menor o igual a una clau determinada; nul si no hi ha aquesta clau |
per cadascú | void forEach (acció BiConsumer) | L'acció donada es realitza per a cada entrada del TreeMap. |
headMap | SortedMap HeadMap (K a clau) | S'utilitza per retornar un parell clau-valor de manera que la clau retornada sigui estrictament inferior a toKey |
headMap | NavigableMap headMap (K a clau, booleà inclòs) | Retorna els parells clau-valor de les claus que són inferiors al toKey o iguals a si s'inclouen. |
entrada superior | Map.Entry higherEntry (clau K) | Retorna la clau menys o nul·la. La clau retornada és estrictament superior a la clau donada. |
clau superior | K superior Tecla (tecla K) | Retorna la clau si el mapatge està present per a la clau donada al mapa de l'arbre. |
keySet | Estableix keySet () | Retorna la col·lecció establerta de claus al TreeMap. |
lastEntry | Map.Entry lastEntry () | Retorna el parell clau-valor de manera que la clau sigui la clau més gran. Retorna nul si la clau no existeix. |
lowerEntry | Map.Entry lowerEntry (tecla K) | Retorna el parell clau-valor de manera que la clau sigui més gran i estrictament inferior a la clau donada. Retorna nul si la clau no existeix. |
clau inferior | Tecla K inferior (tecla K) | Retorna la clau més gran o nul·la. La clau retornada és estrictament inferior a la clau donada. |
navigableKeySet | NavigableSet navigableKeySet () | Retorna el 'NavigableSet' de claus al mapa de l'arbre. |
pollFirstEntry | Map.Entry pollFirstEntry () | Elimina i torna el parell clau-valor de la clau més baixa. |
pollLastEntry | Map.Entry pollLastEntry () | Elimina i retorna el parell clau-valor de la clau més gran. |
posar | V put (clau K, valor V) | Afegeix la clau i el valor donats al TreeMap. |
putAll | void putAll (mapa del mapa) | Tots els parells clau-valor del mapa donat es copien al TreeMap. |
substituir | Substitució V (tecla K, valor V) | Substitueix o canvia el valor de la clau donada pel valor donat. |
substituir | reemplaçament booleà (clau K, V valor antic, V valor nou) | Substitueix oldValue de la clau donada per newValue. |
substituirTots | void replaceAll (funció BiFunction) | Invoca la funció donada i reemplaça totes les entrades pel resultat de la funció. |
subMapa | NavigableMap subMap (K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Retorna els parells clau-valor de claus de 'des de Clau' a 'fins a Clau'. |
Mapa ordenat | Submapa SortedMap (K de clau, K a clau) | Retorna els parells clau-valor per a l'interval des de Clau (inclòs) fins a Clau (exclusiu). |
mapa de cua | SortedMap tailMap (K fromKey) | Retorna parells clau-valor tals que les claus són majors o iguals a fromKey. |
mapa de cua | NavigableMap tailMap (K fromKey, booleà inclòs) | Retorna parells clau-valor per a les claus iguals a fromKey (inclusive = true) o superior a fromKey. |
conté Clau | booleà contéKey (clau d'objecte) | Comprova si hi ha un mapatge per a la clau donada al mapa de l'arbre. Retorna cert si és afirmatiu. |
contéValor | booleà contéValor (valor de l'objecte) | Comprova si hi ha una clau assignada amb el valor donat. Retorna sí si és cert. |
primerClau | K primer Clau () | Retorna la tecla més baixa o la primera del mapa ordenat |
aconseguir | V get (clau d'objecte) | Recupera el valor assignat a la clau donada |
lastKey | K lastKey () | Retorna l'última clau o la tecla més alta del mapa ordenat. |
eliminar | Suprimeix V (clau d'objecte) | Suprimeix el parell clau-valor de la clau donada al TreeMap |
entrySet | Conjunt | Retorna el conjunt del mapa d'arbre donat. |
mida | int size () | Retorna la mida o el nombre total de parells clau-valor al TreeMap. |
valors | Valors de col·lecció () | Retorna la col·lecció de valors del TreeMap. |
Iterant a través de TreeMap
TreeMap consta de parells clau-valor. La classe TreeMap proporciona un mètode 'entrySet' que retorna parells valor-clau al mapa. Podem recórrer aquestes entrades mitjançant el bucle forEach i mostrar claus i valors mitjançant mètodes getKey () i getValue () respectivament.
Això es mostra al programa Java següent:
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() + ')'); } }
Sortida:
El contingut de TreeMap:
(B => Blau)
(G => Verd)
(M => Magenta)
(R => Vermell)
Implementació de TreeMap a Java
El següent programa Java mostra el mètode principal de la classe TreeMap que hem comentat anteriorment.
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); } }
Sortida:
Mapa original: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Entrada inferior més propera que 4: 3 = 9
Entrada més alta més propera que 4: 5 = 25
Tecla inferior més propera que 4: 3
Entrada al pis més propera que 6: 6 = 36
Sostre més proper: 6: 6 = 36
Primera entrada de TreeMap: 1 = 1
Darrera entrada del mapa d’arbre: 10 = 100
Mapa d’arbre invertit: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
Primera entrada de TreeMap: 1 = 1
Darrera entrada del mapa d’arbre: 10 = 100
Submap de 2 a 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
HeadMap: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
Mapa de cua: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Ordena el mapa d’arbres per valor
Per defecte, TreeMap s’ordena segons les claus segons l’ordenació natural. Però si volem ordenar el TreeMap segons els valors, hem de fer ús del comparador per definir l’ordenació.
El programa Java següent ordena el TreeMap per valor.
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()); } } }
Sortida:
El TreeMap ordenat basat en valors:
B: Blau
C: Cian
G: Verd
M: Magenta
R: vermell
Java Hashmap vs Treemap
Vegem algunes de les principals diferències entre un HashMap i un TreeMap.
millor convertidor de youtube a mp3 gratuït
La taula següent mostra aquestes diferències.
HashMap | Mapa d’arbres |
---|---|
HashMap és molt més ràpid que TreeMap. | TreeMap és més lent |
Implementa la interfície del mapa. | Implementa la interfície NavigableMap. |
Utilitza la tècnica d’implementació de hash | Utilitzeu un arbre vermell-negre per a la implementació |
No manté cap ordre d'elements de contingut | Les claus del mapa de l’arbre ja estan ordenades segons l’ordre natural |
Permet una clau nul·la i molts valors nuls | Permet només valors nuls, però les claus no poden ser nul·les |
Realitza operacions bàsiques, posa i entra en temps constant. | Preneu-vos temps de registre (n) per realitzar operacions de put i obtenir |
HashMap té una funcionalitat limitada. | La classe TreeMap proporciona moltes funcions addicionals que ens ajuden a manipular l’estructura de dades. |
Utilitza el mètode equals () per comparar. | Utilitza el mètode compareTo () per comparar. |
Preguntes freqüents
P # 1) Què és TreeMap a Java?
Resposta: TreeMap a Java és una col·lecció de parells clau-valor que ja estan ordenats. Utilitza un arbre negre-vermell per a la implementació. Java TreeMap implementa la interfície NavigableMap a part de la interfície Map i també amplia la classe AbstractMap.
Q # 2) Per què fem servir TreeMap a Java?
Resposta: El TreeMap s’utilitza a Java per implementar interfícies Map i NavigableMap i la classe AbstractMap. Com que les claus TreeMap s’ordenen segons l’ordenació natural, podem utilitzar aquesta estructura de dades per emmagatzemar l’estructura de directoris, les jerarquies d’arbres, etc.
Q # 3) Què és millor: HashMap o TreeMap?
Resposta: HashMap és millor que TreeMap. HashMap sempre triga un temps constant a realitzar operacions bàsiques, mentre que TreeMap triga un temps de registre (n) a realitzar aquestes operacions. Quan hi ha objectes de dades més grans, HashMap té un rendiment més ràpid en comparació amb TreeMap.
Q # 4) Està ordenat TreeMap?
Resposta: Sí, les entrades clau del TreeMap s’ordenen segons l’ordenació natural. La classe TreeMap també ens permet utilitzar un comparador personalitzat per ordenar el TreeMap en funció dels valors.
Q # 5) TreeMap és segur per a fils?
Resposta: No, TreeMap no és una col·lecció apta per a fils.
Conclusió
En aquest tutorial, hem discutit detalladament TreeMap a Java. TreeMap és una col·lecció de parells clau-valor que implementa la interfície del mapa. També implementa una interfície NavigableMap. Els elements del TreeMap són únics i no es permeten duplicats.
Vam veure els constructors i mètodes de TreeMap. També vam implementar el programa TreeMap i vam demostrar els mètodes principals de la classe TreeMap. Després vam discutir les diferències entre HashMap i TreeMap.
=> Visiteu aquí per veure la sèrie d'entrenaments de Java per a tothom.
Lectura recomanada
- TreeSet a Java: tutorial amb exemples de programació
- Arbre de cerca binària a Java: implementació i exemples de codi
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Java String conté () Tutorial de mètode amb exemples
- Què és Java Vector | Tutorial de Java Vector Class amb exemples
- Matriu dentada a Java: tutorial amb exemples
- Tutorial de classe de Java Scanner amb exemples
- Tutorial de cadenes de Java | Mètodes de cadena Java amb exemples