Raccomandato, 2024

Scelta Del Redattore

Differenza tra HashMap e LinkedHashMap in Java

HashMap e LinkedHashMap sono le classi, abbastanza simili tra loro e 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 è che Hashmap non mantiene l'ordine delle voci memorizzate in una mappa. D'altra parte, LinkedHashMap utilizza una struttura dati ibrida per mantenere l'ordine delle voci in cui sono state inserite. Nel grafico di confronto qui sotto ho esplorato alcune altre differenze tra HashMap e LinkedHashMap, basta dare un'occhiata.

Grafico comparativo

Base per il confrontoHashMapLinkedHashMap
Di baseL'ordine di inserzione in HashMap non viene mantenuto.L'ordine di inserimento viene mantenuto in LinkedHashMap.
Struttura datiHashMap utilizza HashTable per memorizzare le mappe.LinkedHashMap utilizza HashTable insieme a Elenco collegato per memorizzare la mappa.
Estende / UtensiliHashMap 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 spese generali.Comparativamente più overhead perché deve mantenere l'ordine delle voci della mappa.

Definizione di HashMap

HashMap è una classe che viene utilizzata per creare una mappa. Implementa l'interfaccia della mappa . Estende inoltre la classe AbstractMap in modo che possa utilizzare una tabella hash per memorizzare le voci nella mappa. Le voci della mappa sono una coppia in cui ogni chiave è associata al valore. La chiave nella voce viene utilizzata per recuperare il valore, quindi la chiave deve essere univoca. Ecco perché le chiavi duplicate non sono consentite in HashMap. Ma la chiave in ogni voce della mappa può avere un tipo diverso, ovvero le chiavi nella mappa create da HashMap possono essere eterogenee. La struttura dati utilizzata da HashMap per memorizzare una mappa è una tabella hash.

L'ordine di inserzione delle voci in HashMap non viene mantenuto. L'inserimento di voci nella mappa creata utilizzando 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 eseguita 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.println (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} 

Come nel codice precedente, puoi vedere che ho creato un oggetto di HashMap e ho aggiunto le voci usando il metodo puts e quando ho stampato l'oggetto HashMap, le voci non sono stampate nell'ordine in cui sono state inserite. Pertanto, non è possibile fingere che l'ordine delle voci in HashMap venga restituito. 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 la classe HashMap ed è stato introdotto successivamente in HashMap in JDK versione 4.0. Essendo la classe figlia della classe HashMap, LinkedHashMap è esattamente uguale alla classe HashMap che include costruttori e metodi. Ma, LinkedHashMap differisce nel senso che mantiene l'ordine di inserimento delle voci nella mappa. La struttura dati utilizzata da LinkedHashMap per memorizzare la mappa è l' elenco e la tabella hash collegati .

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

Differenze chiave tra HashMap e LinkedHashMap in Java

  1. La differenza più importante è che l'ordine di inserzione di HashMap non viene conservato mentre l'ordine di inserimento di LinkedHashMap viene mantenuto .
  2. La struttura dati utilizzata da HashMap per memorizzare gli elementi della mappa è Hashtable . D'altra parte, la struttura dati utilizzata da LinkedHashMap è l' elenco collegato e Hashtable .
  3. La classe HashMap estende la classe AbstractMap e implementa l'interfaccia Map . Tuttavia, la classe LinkedHashMap è una classe figlia di classe HashMap, ad esempio la classe LinkedHashMap estende la classe HashMap.
  4. La classe HashMap è stata introdotta nella versione 2.0 di JDK . La classe LinkedHashMap è stata introdotta successivamente nella versione JDK 4.0 .
  5. La classe comparativamente LinkedHashMap ha più overhead di HashMap in quanto deve mantenere l'ordine degli elementi inseriti nella mappa.

Conclusione:

LinkedHashMap deve essere usato solo dove siamo preoccupati per la sequenza degli elementi inseriti nella mappa.

Top