Differenza tra HashMap e TreeMap in Java

Autore: Laura McKinney
Data Della Creazione: 2 Aprile 2021
Data Di Aggiornamento: 14 Maggio 2024
Anonim
HashMap, LinkedHashMap and TreeMap in Java
Video: HashMap, LinkedHashMap and TreeMap in Java

Contenuto


HashMap e TreeMap sono le classi Map ed entrambe implementano l'interfaccia Map. La mappa è un oggetto che memorizza coppie chiave-valore, in cui ogni chiave è unica e può contenere valori duplicati. La classe HashMap utilizza la tabella hash come struttura di dati. TreeMap utilizza l'albero rosso-nero come struttura dati. La differenza principale tra HashMap e Treemap è che HashMap non mantiene l'ordine di inserimento mentre, il treemap lo fa.

Quindi iniziamo la nostra discussione sulle differenze tra HashMap e TreeMap con l'aiuto della tabella di confronto mostrata di seguito.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoHashMapTreeMap
Di base HashMap non mantiene l'ordine di inserimento.TreeMap mantiene l'ordine di inserimento.
Struttura datiHashMap utilizza la tabella hash come struttura di dati sottostante.TreeMap utilizza Red-Black Tree come struttura dati sottostante.
Chiavi e valori nulli HashMap consente la chiave Null una volta e il valore Null in qualsiasi numero di volte.TreeMap non consente la chiave Null ma consente i valori Null in qualsiasi numero di volte.
Estende e implementaHashMap estende la classe AbstractMap e implementa l'interfaccia Map.TreeMap estende la classe AbstractMap e implementa l'interfaccia SortedMap e NavigableMap.
PrestazioneHashMap funziona più velocemente.TreeMap rispetto a HashMap funziona più lentamente.


Definizione di HashMap

HashMap è una classe Map. Usa il tabella hash, come struttura di dati per memorizzare la coppia valore-chiave delle mappe. L'inserimento della coppia chiave-valore viene effettuato utilizzando il codice hash del chiavi. Pertanto, ogni chiave nella mappa deve essere unica in quanto verrà utilizzata per recuperare i valori.

L'ordine di inserimento in HashMap è non preservato, il che significa che l'oggetto hashmap non restituisce gli elementi nell'ordine in cui sono stati inseriti. D'altra parte, l'ordine in cui verranno restituiti gli elementi non è fisso.

Il chiave è permesso essere NULLO subito, ma il valori può essere NULLO in qualsiasi momento. HashMap può contenere il file eterogeneo oggetti per chiavi e valori.


Esistono quattro costruttori di HashMap:

HashMap () HashMap (Mappa m) HashMap (capacità int), HashMap (capacità int, float fillRatio)

Il primo costruttore crea l'oggetto vuoto di HashMap. Il secondo il costruttore inizializza HashMap usando elementi di Map m. Il terzo Il costruttore inizializza HashMap con la capacità fornita nell'argomento. Il il quarto Il costruttore inizializza la capacità e il rapporto di riempimento dell'oggetto HashMap.

Il predefinito capacità di HashMap è 16e l'impostazione predefinita rapporto di riempimento di HashMap è 0.75.

Definizione di TreeMap

Come HashMap, TreeMap è anche una classe Map. TreeMap si estende AbstractMap classe e strumenti NavigabelMap e SortedMap. Gli oggetti TreeMap memorizza gli elementi della mappa nella struttura ad albero. La struttura dei dati utilizzata per la memorizzazione della mappa è la Albero rosso-nero.

TreeMap memorizza la coppia valore-chiave nell'ordine ordinato, che aiuta a recuperare rapidamente gli elementi. L'oggetto TreeMap restituisce gli elementi in smistato (ascendente) ordine.

Esistono quattro costruttori di TreeMap:

TreeMap () TreeMap (Comparator <? Super K> comp) TreeMap (Mappa <? Estende K,? Estende V> m) TreeMap (SortedMap sm)

Il primo i costruttori creano un oggetto vuoto di TreeMap che sarebbe ordinato in ordine naturale le sue chiavi. Il secondo il costruttore creerà una mappa ad albero vuota che verrà ordinata per Comparatore cmp. Il terzo il costruttore sopra creerà una mappa di alberi che verrà inizializzata usando le voci di Carta geografica m. Il il quarto il costruttore creerà una mappa trema che verrà inizializzata usando le voci di SortedMap sm.

Treemap non ha nuovi metodi propri ma utilizza il metodo di interfaccia NavigableMap e SortedMap e la classe AbstractMap.

  1. Entrambe le classi vengono utilizzate per creare oggetti mappa, ma la differenza di base tra HashMap e Treemap è che HashMap non mantiene l'ordine di inserimento mentre lo fa Treemap.
  2. La struttura dei dati utilizzata da Hashmap per memorizzare gli elementi della mappa è la tabella hash e la struttura dei dati utilizzata da TreeMap per memorizzare gli elementi della mappa è l'albero rosso-nero.
  3. Entrambe le classi Hashmap e Treemap estendono la classe AbstractMap, ma la classe HashMap implementa l'interfaccia Map e TreeMap implementa l'interfaccia NavigableMap e SortedMap.
  4. I valori possono essere Null in qualsiasi numero di tempo in entrambi, ma la chiave può essere Null solo una volta in HashMap e una chiave non può mai essere in Treemap.
  5. Le prestazioni di HashMap sono più veloci e non perdono tempo nell'ordinamento degli elementi della mappa come fa TreeMap. Quindi, TreeMap funziona più lentamente di HashMap.

Conclusione:

TreeMap deve essere utilizzato solo quando è richiesta una coppia valore-chiave in forma ordinata. Poiché l'ordinamento include i costi delle prestazioni. HashMap non sincronizzato funziona più velocemente.