Differenze tra HashMap e TreeMap

HashMap ha fatto parte della collezione Java. Fornisce l'implementazione di base di Java Map Interface. I dati sono memorizzati in coppie (chiave, valore). Devi conoscere la sua chiave per accedere a un valore. HashMap è noto come HashMap perché utilizza la tecnica Hashing. TreeMap viene utilizzato per implementare l'interfaccia della mappa e NavigableMap con la classe astratta. La mappa viene ordinata in base all'ordine naturale delle sue chiavi o dal comparatore fornito al momento della creazione della mappa, a seconda del costruttore utilizzato.

Somiglianze tra HashMap e TreeMap

A parte le differenze, ci sono le seguenti somiglianze tra hashmap e treemap:

  • Entrambe le classi HashMap e TreeMap implementano interfacce serializzabili e clonabili.
  • Sia HashMap che TreeMap estendono la classe AbstractMap.
  • Entrambe le classi HashMap e TreeMap operano su coppie chiave-valore.
  • Sia HashMap che TreeMap sono raccolte non sincronizzate.
  • Sia HashMap che TreeMap non riescono a eseguire raccolte veloci.

Entrambe le implementazioni fanno parte del framework di raccolta e memorizzano i dati in coppie chiave-valore.

Programma Java che mostra HashMap e TreeMap

Ecco un programma Java che dimostra come gli elementi vengono inseriti e recuperati dall'hashmap:

package com.edubca.map;
import java.util.*;
class HashMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
HashMap hashmap =
new HashMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = hashmap.get(arr(i));
// If first occurrence of the element
if (hashmap.get(arr(i)) == null)
hashmap.put(arr(i), 1);
// If elements already present in hash map
else
hashmap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m:hashmap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test the above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Produzione:

Dall'output, è chiaro che hashmap non mantiene alcun ordine. Ecco un programma Java che dimostra come gli elementi vengono inseriti e recuperati dalla mappa del percorso.

Codice:

package com.edubca.map;
import java.util.*;
class TreeMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
TreeMap treemap =
new TreeMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = treemap.get(arr(i));
// If first occurrence of element
if (treemap.get(arr(i)) == null)
treemap.put(arr(i), 1);
// If elements already present in hash map
else
treemap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m: treemap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Produzione:

Dall'output, si osserva che le chiavi sono ordinate in un ordine naturale. Quindi Treemap mantiene l'ordine ordinato.

Differenze testa a testa tra HashMap e TreeMap (infografica)

Di seguito sono riportate le principali differenze tra HashMap e TreeMap

Differenza chiave tra HashMap e TreeMap

Di seguito sono riportati i punti di differenza chiave HashMap e TreeMap:

1. Struttura e attuazione

Hash Map è un'implementazione basata su tabella hash. Estende la classe Mappa astratta e implementa l'interfaccia Mappa. Una mappa hash funziona secondo il principio dell'hashing. L'implementazione di Map funziona come una tabella hash con bucket ma quando le dimensioni dei bucket sono troppo grandi, vengono convertite in nodi Tree, ognuno con una struttura simile ai nodi di TreeMap. TreeMap estende la classe Mappa astratta e implementa un'interfaccia Mappa navigabile. La struttura dati sottostante per la mappa treemap è un albero rosso-nero.

2. Ordine di iterazione

L'ordine di iterazione di Hash Map non è definito mentre gli elementi di una TreeMap sono ordinati in ordine naturale o in un ordine personalizzato specificato utilizzando un comparatore.

3. Prestazioni

Poiché Hashmap è un'implementazione basata su hashtable, fornisce prestazioni a tempo costante pari a O (1) per la maggior parte delle operazioni comuni. Il tempo richiesto per cercare un elemento in una mappa hash è O (1). Ma se esiste un'implementazione impropria in hashmap, ciò può comportare un sovraccarico di memoria aggiuntivo e un peggioramento delle prestazioni. D'altra parte, TreeMap fornisce una prestazione di O (log (n)). Poiché hashmap è basato su hashtable, richiede un intervallo contiguo di memoria mentre una mappa treemap utilizza solo la quantità di memoria richiesta per contenere gli elementi. Quindi HashMap è più efficiente in termini di tempo rispetto a treemap ma treemap è più efficiente in termini di spazio di HashMap.

4. Gestione nulla

HashMap consente quasi una chiave null e molti valori null mentre, in una mappa ad albero, null non può essere utilizzato come chiave sebbene siano consentiti valori null. Se null viene utilizzato come chiave in hashmap, genererà un'eccezione puntatore null poiché utilizza internamente il metodo compare o compareTo per ordinare gli elementi.

Confronto di tabella

Ecco una tabella di confronto che mostra le differenze tra hashmap e treemap:

Base di confrontoHashMapTreeMap
SintassiHashMap di classe pubblica estende AbstractMap implementa Map, Cloneable, SerializableTreeMap di classe pubblica estende gli strumenti AbstractMapNavigableMap, Cloneable, Serializable
ordinazioneHashMap non fornisce alcun ordine per gli elementi.Gli elementi sono ordinati in un ordine naturale o personalizzato.
VelocitàVeloceLento
Chiavi e valori nulliConsente quasi una chiave come null e più valori null.Non consente null come chiave ma consente più valori null.
Consumo di memoriaHashMap consuma più memoria a causa della tabella hash sottostante.Consuma meno memoria rispetto a HashMap.
FunzionalitàFornisce solo funzionalità di baseFornisce funzionalità più ricche.
Metodo di confronto utilizzatoFondamentalmente usa il metodo equals () per confrontare le chiavi.Utilizza il metodo compare () o compareTo () per confrontare le chiavi.
Interfaccia implementataMappa, serializzabile e clonabileMappa navigabile, serializzabile e clonabile
PrestazioneFornisce una prestazione di O (1).Fornisce prestazioni di O (log n)
Struttura datiUtilizza la tabella hash come struttura di dati.Utilizza Red-Black Tree per l'archiviazione dei dati.
Elementi omogenei ed eterogeneiConsente elementi omogenei ed eterogenei perché non esegue alcun ordinamento.Permette solo elementi omogenei mentre esegue l'ordinamento.
Casi d'usoUtilizzato quando non sono necessarie coppie chiave-valore in ordine ordinato.Utilizzato quando è necessario ordinare le coppie chiave-valore di una mappa.

Conclusione

Dall'articolo, si è concluso che hashmap è un'implementazione di uso generale dell'interfaccia Map. Fornisce prestazioni di O (1) mentre Treemap fornisce prestazioni di O (log (n)). Quindi HashMap è generalmente più veloce di TreeMap.

Articoli consigliati

Questa è una guida a HashMap vs TreeMap. Qui discutiamo l'introduzione a HashMap vs TreeMap, le differenze tra Hashmap e Treemap e una tabella di confronto. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più–

  1. WebLogic vs JBoss
  2. Elenco vs set
  3. Git Fetch vs Git Pull
  4. Kafka vs Spark | Differenze principali
  5. Le 5 migliori differenze tra Kafka e Kinesis

Categoria: