Java HashMap i TreeMap ambdues són les classes del framework Java Collections. La implementació de Java Map normalment actua com una taula hash agrupada. Quan els cubs es fan massa grans, es transformen en nodes de TreeNodes , cadascuna estructurada de manera semblant a les de java.util.TreeMap .
HashMap
Implements HashMap Mapa, clonable i Serialitzable interfície. S'estén Mapa abstracte classe. Pertany a java.util paquet.
- HashMap conté valor basat en la clau.
- Pot tenir una única clau nul·la i diversos valors nuls.
- HashMap no manté l'ordre durant la iteració.
- Conté elements únics.
- Funciona segons el principi de hash.
TreeMap
La classe TreeMap s'estén Mapa abstracte classe i instruments Mapa navegable , Clonable , i Serialitzable interfície. TreeMap és un exemple d'a Mapa ordenat . Està implementat per l'arbre vermell-negre, el que significa que l'ordre de les claus està ordenat.
- TreeMap també conté valor basat en la clau.
- TreeMap s'ordena per claus.
- Conté elements únics.
- No pot tenir una clau nul·la, però té diversos valors nuls.
- Les claus estan en ordre ascendent.
- Emmagatzema l'objecte a l'estructura d'arbre.
Similituds entre HashMap i TreeMap
- Les dues classes s'estenen Mapa abstracte classe.
- Un mapa és un objecte que emmagatzema valor-clau parells. A la parella clau-valor, cada clau és única, però els seus valors poden ser-ho duplicar .
- Ambdues classes representen el mapeig des de clau a valors .
- Els dos mapes no ho són sincronitzat .
- Ús de mapes posar() mètode per afegir un element al mapa.
- L'iterador llança a ConcurrentModificationException si el mapa es modifica d'alguna manera.
La diferència clau entre HashMap i TreeMap és:
HashMap no conserva l'ordre d'iteració mentre el TreeMap preservar l'ordre utilitzant el comparat amb() mètode o a comparador establert al constructor del TreeMap.
La taula següent descriu les diferències entre HashMap i TreeMap.
Base | HashMap | TreeMap |
---|---|---|
Definició | Java HashMap és una implementació basada en hashtable de la interfície Map. | Java TreeMap és una implementació basada en l'estructura d'arbre de la interfície Map. |
Implements d'interfície | Implements HashMap Mapa, clonable , i Serialitzable interfície. | Implements TreeMap Mapa navegable, clonable , i Serialitzable interfície. |
Claus/Valors nuls | HashMap permet a solter clau nul·la i múltiples valors nuls. | TreeMap no ho permet nul claus però pot tenir múltiples valors nuls. |
Homogeni/ Heterogeni | HashMap permet elements heterogenis perquè no realitza l'ordenació de claus. | TreeMap permet valors homogenis com a clau a causa de l'ordenació. |
Rendiment | HashMap és més ràpid que TreeMap perquè proporciona un rendiment en temps constant que és O(1) per a les operacions bàsiques com get() i put(). | TreeMap és lent en comparació amb HashMap perquè proporciona el rendiment de O(log(n)) per a la majoria d'operacions com add(), remove() i contains(). |
Estructura de dades | La classe HashMap utilitza el taula hash . | TreeMap utilitza internament a Vermell-negre arbre, que és un arbre de cerca binari d'autoequilibri. |
Mètode de comparació | S'utilitza és igual() mètode de la Objecte classe per comparar claus. El mètode equals() de la classe Map el substitueix. | Fa servir el comparat amb() mètode per comparar claus. |
Funcionalitat | La classe HashMap només conté funcions bàsiques com ara obtenir (), posar (), KeySet () , etc. | La classe TreeMap és rica en funcionalitats, perquè conté funcions com: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() . |
Ordre dels elements | HashMap no manté cap ordre. | Els elements estan ordenats ordre natural (ascendent). |
Usos | El HashMap s'ha d'utilitzar quan no necessitem la parella clau-valor en ordre ordenat. | El TreeMap s'ha d'utilitzar quan necessitem un parell clau-valor en ordre ordenat (ascendent). |
Exemple de HashMap vs TreeMap
En l'exemple següent, podem observar que els elements del HashMap estan en ordre aleatori mentre que els elements del TreeMap estan ordenats en ordre ascendent.
import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } }
Sortida: