Differenza tra HashMap e LinkedHashMap in Java

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

Contenuto


HashMap e LinkedHashMap sono le classi, abbastanza simili tra loro e vengono utilizzate per creare una mappa. La classe HashMap estende la classe AbstractMap per utilizzare una tabella hash per memorizzare gli elementi nella mappa. La classe LinkedHashMap mantiene le voci nella mappa in base al loro ordine di inserimento. La caratteristica che distingue HashMap e LinkedHashMap l'una dall'altra è quella HashMap non mantiene l'ordine delle voci memorizzate in una mappa. D'altro canto, LinkedHashMap utilizza una struttura di dati ibrida per mantenere l'ordine delle voci in cui sono state inserite. Nella tabella di confronto di seguito ho esplorato alcune altre differenze tra HashMap e LinkedHashMap basta dare un'occhiata.

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

Tabella di comparazione

Base per il confrontoHashMapLinkedHashMap
Di baseL'ordine di inserimento in HashMap non viene conservato.L'ordine di inserimento è conservato in LinkedHashMap.
Struttura datiHashMap utilizza HashTable per memorizzare le mappe.LinkedHashMap utilizza HashTable insieme a Elenco collegato per memorizzare la mappa.
Estende Utensili /HashMap estende AbstractMap e implementa l'interfaccia Map.LinkedHashMap estende Hashmap.
VersioneHashMap è stato introdotto in JDK 2.0.LinkedHashMap è stato introdotto in JDK 4.0.
in altoComparativamente meno sovraccarico.Comparativamente più sovraccarico perché deve mantenere l'ordine delle voci della mappa.


Definizione di HashMap

HashMap è una classe utilizzata per creare una mappa. Implementa Carta geografica Interfaccia. Si estende anche il AbstractMap in modo che possa utilizzare una tabella hash per memorizzare le voci nella mappa. Le voci della mappa sono a coppia in cui ogni chiave è associata al valore. La chiave nella voce viene utilizzata per recuperare il valore, pertanto la chiave deve essere univoca. Ecco perché le chiavi duplicate non sono consentite nella HashMap. Ma la chiave in ogni voce della mappa può avere un tipo diverso, ovvero le chiavi nella mappa creata da HashMap possono essere eterogenee. La struttura dei dati utilizzata da HashMap per memorizzare una mappa è una tabella hash.

L'ordine di inserimento delle voci in HashMap non viene conservato. L'inserimento di voci nella mappa creata usando HashMap si basa sul codice hash calcolato dalle chiavi nelle voci. Se per errore hai inserito una chiave duplicata in HashMap, sostituirà il valore precedente di quella chiave con il nuovo valore proposto e restituirà il vecchio valore. Se non viene utilizzata alcuna chiave duplicata e non è stata effettuata alcuna sostituzione, la chiave restituisce sempre Null. Vediamo come aggiungere le voci alla mappa hash con il seguente esempio.


Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Giordania = 200}

Come nel codice sopra, puoi vedere che ho creato un oggetto di HashMap e ho aggiunto le voci usando il metodo put e quando ho modificato l'oggetto HashMap, le voci non sono state modificate nell'ordine in cui sono state inserite. Pertanto, non è possibile pretendere che venga restituito l'ordine delle voci in HashMap. HashMap utilizza tutti i metodi dell'interfaccia Map e della classe AbstractMap e non introduce alcun nuovo metodo; ha i suoi costruttori. La capacità predefinita della mappa hash è 16 e il rapporto di riempimento predefinito è 0.75.

Definizione di LinkedHashMap

LinkedHashMap è anche un uso di classe per creare una mappa. LinkedHashMap estende il HashMap classe ed è stato introdotto successivamente in HashMap in JDK versione 4.0. Essere la classe figlio della classe HashMap LinkedHashMap è esattamente la stessa della classe HashMap compresi i costruttori e i metodi. Ma LinkedHashMap differisce nel senso che mantiene l'ordine dell'inserimento delle voci nella mappa. La struttura dei dati utilizzata da LinkedHashMap per memorizzare la mappa è lista collegata e tabella hash.

Oltre ai metodi ereditati da HashMap, LinkedHashMap introduce un nuovo metodo che è removeEldestEntry (). Questo metodo viene utilizzato per rimuovere la voce più vecchia nella mappa. La capacità predefinita di LinkedHashMap è 16 e il rapporto di riempimento predefinito è 0,75, anch'esso simile alla classe HashMap.

  1. La differenza più importante è che l'ordine di inserimento di HashMap è non conservato mentre, l'ordine di inserimento di LinkedHashMap è conservato.
  2. La struttura dei dati utilizzata da HashMap per memorizzare gli elementi della mappa è tabella hash. D'altra parte, la struttura dei dati utilizzata da LinkedHashMap è Lista collegata e tabella hash.
  3. La classe HashMap si estende AbstractMap classe e implementa il Carta geografica interfaccia. Tuttavia, la classe LinkedHashMap è una classe figlio di HashMap la classe cioè la classe LinkedHashMap estende la classe HashMap.
  4. La classe HashMap è stata introdotta in JDK 2.0 versione. La classe LinkedHashMap è stata introdotta in seguito JDK 4.0 versione.
  5. Comparativamente la classe LinkedHashMap ha un sovraccarico maggiore rispetto a HashMap in quanto deve mantenere l'ordine degli elementi inseriti nella mappa.

Conclusione:

LinkedHashMap deve essere utilizzato solo quando siamo preoccupati per la sequenza degli elementi inseriti nella mappa.