Differenza tra HashMap e LinkedHashMap 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.
- Tabella di comparazione
- Definizione
- Differenze chiave
- Conclusione
Tabella di comparazione
Base per il confronto | HashMap | LinkedHashMap |
---|---|---|
Di base | L'ordine di inserimento in HashMap non viene conservato. | L'ordine di inserimento è conservato in LinkedHashMap. |
Struttura dati | HashMap 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. |
Versione | HashMap è stato introdotto in JDK 2.0. | LinkedHashMap è stato introdotto in JDK 4.0. |
in alto | Comparativamente 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 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. 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.
Definizione di LinkedHashMap
- La differenza più importante è che l'ordine di inserimento di HashMap è non conservato mentre, l'ordine di inserimento di LinkedHashMap è conservato.
- 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.
- 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.
- La classe HashMap è stata introdotta in JDK 2.0 versione. La classe LinkedHashMap è stata introdotta in seguito JDK 4.0 versione.
- 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.