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
- 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: