logo

Differenza tra HashMap e TreeMap

Giava HashMap E Mappa ad albero entrambe sono le classi del framework Java Collections. L'implementazione di Java Map solitamente agisce come una tabella hash con bucket. Quando i bucket diventano troppo grandi, vengono trasformati in nodi di TreeNodi , ciascuno strutturato in modo simile a quelli in java.util.TreeMap .

concatenare stringhe

HashMap

Implementa HashMap Mappa, clonabile E Serializzabile interfaccia. Si estende Mappa astratta classe. Appartiene a java.util pacchetto.

  • HashMap contiene un valore in base alla chiave.
  • Potrebbe avere una singola chiave nulla e più valori nulli.
  • HashMap non mantiene l'ordine durante l'iterazione.
  • Contiene elementi unici.
  • Funziona secondo il principio dell'hashing.

Mappa ad albero

La classe TreeMap si estende Mappa astratta classe e implementa Mappa navigabile , Clonabile , E Serializzabile interfaccia. TreeMap è un esempio di a Mappa ordinata . È implementato dall'albero Rosso-Nero, il che significa che l'ordine delle chiavi è ordinato.

  • TreeMap contiene anche un valore basato sulla chiave.
  • TreeMap è ordinato per chiavi.
  • Contiene elementi unici.
  • Non può avere una chiave nulla ma avere più valori nulli.
  • Le chiavi sono in ordine crescente.
  • Memorizza l'oggetto nella struttura ad albero.

Somiglianze tra HashMap e TreeMap

    HashMapE Mappa ad albero le classi implementano Clonabile E Serializzabile interfaccia.
  • Entrambe le classi si estendono Mappa astratta classe.
  • Una mappa è un oggetto che memorizza valore-chiave coppie. Nella coppia chiave-valore, ogni chiave è univoca, ma i relativi valori potrebbero esserlo duplicare .
  • Entrambe le classi rappresentano la mappatura da chiave A valori .
  • Entrambe le mappe non lo sono sincronizzato .
  • Utilizzo della mappa Mettere() metodo per aggiungere un elemento nella mappa.
  • L'iteratore lancia a ConcurrentModificationException se la mappa viene modificata in qualche modo.

La differenza chiave tra HashMap e TreeMap è:

HashMap non preserva l'ordine di iterazione mentre il Mappa ad albero preservare l'ordine utilizzando il file Paragonare a() metodo o a comparatore impostato nel costruttore di TreeMap.

modificare il file linux

La tabella seguente descrive le differenze tra HashMap e TreeMap.

Base HashMap Mappa ad albero
Definizione Giava HashMap è un'implementazione basata su tabella hash dell'interfaccia Map. Giava Mappa ad albero è un'implementazione basata sulla struttura ad albero dell'interfaccia Map.
Implementazioni dell'interfaccia Implementa HashMap Mappa, clonabile , E Serializzabile interfaccia. Implementa TreeMap Mappa navigabile, clonabile , E Serializzabile interfaccia.
Chiavi/valori nulli HashMap consente a separare chiave nulla e multiplo valori nulli. TreeMap non lo consente nullo chiavi ma può avere multiplo valori nulli.
Omogeneo/Eterogeneo HashMap consente elementi eterogenei perché non esegue l'ordinamento sulle chiavi. TreeMap consente valori omogenei come chiave a causa dell'ordinamento.
Prestazione HashMap lo è Più veloce rispetto a TreeMap perché fornisce prestazioni a tempo costante pari a O(1) per le operazioni di base come get() e put(). TreeMap è lento rispetto a HashMap perché fornisce le prestazioni di O(log(n)) per la maggior parte delle operazioni come add(),remove() e contiene().
Struttura dati La classe HashMap utilizza il file tabella hash . TreeMap utilizza internamente a Rosso nero albero, che è un albero di ricerca binario autobilanciante.
Metodo di confronto Utilizza equivale() metodo del Oggetto classe per confrontare le chiavi. Il metodo equals() della classe Map lo sovrascrive. Utilizza il Paragonare a() metodo per confrontare le chiavi.
Funzionalità La classe HashMap contiene solo funzioni di base come get(), put(), KeySet() , eccetera. . La classe TreeMap è ricca di funzionalità, perché contiene funzioni come: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Ordine degli elementi HashMap non mantiene alcun ordine. Gli elementi sono ordinati ordine naturale (ascendente).
Usi L'HashMap dovrebbe essere utilizzato quando non richiediamo una coppia chiave-valore in ordine. La TreeMap dovrebbe essere utilizzata quando richiediamo una coppia chiave-valore in ordine (ascendente).

Esempio di HashMap vs TreeMap

Nell'esempio seguente, possiamo osservare che gli elementi di HashMap sono in ordine casuale mentre gli elementi di TreeMap sono disposti in ordine crescente.

 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()); } } } 

Produzione:

Differenza tra HashMap e TreeMap