Diferència entre HashMap i LinkedHashMap a Java

Autora: Laura McKinney
Data De La Creació: 2 Abril 2021
Data D’Actualització: 9 Ser Possible 2024
Anonim
Diferència entre HashMap i LinkedHashMap a Java - Tecnologia
Diferència entre HashMap i LinkedHashMap a Java - Tecnologia

Content


HashMap i LinkedHashMap són les classes, força semblants entre si i s'utilitzen per crear un mapa. La classe HashMap amplia la classe AbstractMap per utilitzar una taula hash per emmagatzemar els elements al mapa. La classe LinkedHashMap manté les entrades al mapa en funció del seu ordre d’inserció. La característica que distingeix HashMap i LinkedHashMap els uns dels altres és la següent Hashmap no manté l’ordre de les entrades emmagatzemades en un mapa. Per altra banda, LinkedHashMap utilitza una estructura de dades híbrida per mantenir l’ordre d’entrades en què s’han inserit. Al gràfic de comparació que hi ha a continuació, exploro algunes altres diferències entre HashMap i LinkedHashMap.

  1. Gràfic de comparació
  2. Definició
  3. Diferències claus
  4. Conclusió

Gràfic de comparació

Bases per a la comparacióHashMapLinkedHashMap
BàsicL'ordre d'inserció a HashMap no es conserva.L’ordre d’inserció es conserva a LinkedHashMap.
Estructura de dadesHashMap utilitza HashTable per emmagatzemar mapes.LinkedHashMap utilitza HashTable juntament amb Llista enllaçada per emmagatzemar mapa.
Ampliacions / ImplementacionsHashMap estén AbstractMap i implementa la interfície Map.LinkedHashMap estén Hashmap.
VersióHashMap es va introduir en JDK 2.0.LinkedHashMap es va introduir a JDK 4.0.
Despeses generalsComparativament menys aèries.Comparativament més despesa perquè ha de mantenir l’ordre de les entrades del mapa.


Definició de HashMap

HashMap és una classe que s’utilitza per crear un mapa. Implementa Mapa Interfície També s’amplia la AbstractMap classe perquè pugui utilitzar una taula hash per emmagatzemar les entrades al mapa. Les entrades del mapa són a parella on cada clau està associada amb el valor. La clau de l'entrada s'utilitza per recuperar el valor, per tant, la clau ha de ser única. És per això que no es permeten les claus duplicades al HashMap. Però la clau de cada entrada del mapa pot tenir un tipus diferent, és a dir, les claus del mapa creat per HashMap poden ser heterogènies. L’estructura de dades utilitzada pel HashMap per emmagatzemar un mapa és una taula hash.

No es conserva l’ordre d’inserció de les entrades del HashMap. La inserció d’entrades al mapa creat mitjançant HashMap es basa en el codi de hash calculat per les tecles d’entrades. Si per error heu introduït una clau duplicada al HashMap, substituirà el valor anterior d'aquesta clau pel nou valor proposat i retornarà el valor anterior. Si no s’utilitza cap clau duplicada i no s’ha produït cap substitució, la clau sempre torna nul·la. Vegem com afegir les entrades al mapa de hash amb l'exemple següent.


Hashmap hm = Hashmap nou (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordània", 200); System.out.ln (hm); / * sortida * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordània = 200}

Com en el codi anterior, podeu veure que he creat un objecte de HashMap i que he afegit les entrades mitjançant el mètode put i quan edito l'objecte HashMap, les entrades no es publiquen en l'ordre en què s'han inserit. Per tant, no podeu fingir que us retornarà l'ordre de les entrades de l'HashMap. HashMap utilitza tots els mètodes de la interfície Map i la classe AbstractMap i no introdueix cap mètode nou; té els seus propis constructors. La capacitat predeterminada del mapa hash és 16 i la proporció d'ompliment per defecte és 0.75.

Definició de LinkedHashMap

LinkedHashMap també és un ús de classe per crear un mapa. LinkedHashMap estén el HashMap class i es va introduir després a HashMap en la versió 4.0 de JDK. El fet de ser classe infantil de la classe HashMap LinkedHashMap és exactament el mateix que la classe HashMap inclosos els constructors i els mètodes. Però, LinkedHashMap difereix en el sentit que manté l’ordre d’inserció de les entrades al mapa. L’estructura de dades que s’utilitza LinkedHashMap per emmagatzemar el mapa és llista enllaçada i taula de hash.

A més dels mètodes heretats per HashMap, LinkedHashMap introdueix un nou mètode que és removeEldestEntry (). Aquest mètode s'utilitza per eliminar l'entrada més antiga al mapa. La capacitat predeterminada del LinkedHashMap és de 16 i la proporció d'ompliment per defecte és de 0,75, que també és similar a la classe HashMap.

  1. La diferència més important és que l'ordre d'inserció del HashMap és no conservat mentre que, l’ordre d’inserció del LinkedHashMap és conservat.
  2. L’estructura de dades utilitzada per HashMap per emmagatzemar els elements del mapa és Taula escriptori. D'altra banda, l'estructura de dades utilitzada per LinkedHashMap és Llista d'enllaç i Taula escriptori.
  3. La classe HashMap s'estén AbstractMap classe i implementa la Mapa interfície. Tanmateix, la classe LinkedHashMap és una classe infantil HashMap classe és a dir, la classe LinkedHashMap estén la classe HashMap.
  4. La classe de HashMap es va introduir a la JDK 2.0 versió. La classe LinkedHashMap es va introduir més tard a JDK 4.0 versió.
  5. Comparativament, la classe LinkedHashMap té més despeses que HashMap, ja que ha de mantenir l’ordre dels elements inserits al mapa.

Conclusió:

LinkedHashMap només s’ha d’utilitzar quan ens preocupa la seqüència dels elements inserits al mapa.