Priporočena, 2024

Izbira Urednika

Razlika med HashMap in LinkedHashMap v Javi

HashMap in LinkedHashMap sta razredu, ki sta si zelo podobna in se uporabljata za ustvarjanje zemljevida. Razred HashMap razširja razred AbstractMap tako, da za shranjevanje elementov na zemljevidu uporablja razpršeno tabelo. Razred LinkedHashMap ohranja vnose na zemljevidu glede na njihov vrstni red vstavljanja. Funkcija, ki razlikuje med seboj HashMap in LinkedHashMap, je, da Hashmap ne vzdržuje vrstnega reda shranjenih vnosov v zemljevidu. Po drugi strani pa LinkedHashMap uporablja hibridno podatkovno strukturo za vzdrževanje vrstnega reda vnosov, v katere so bili vstavljeni. V spodnji tabeli za primerjavo sem preučil nekatere druge razlike med HashMap in LinkedHashMap.

Primerjalna tabela

Podlaga za primerjavoHashMapLinkedHashMap
OsnovnoVrstni red vstavljanja v HashMap se ne ohrani.Vrstni red vstavljanja je ohranjen v povezavi LinkedHashMap.
Struktura podatkovHashMap uporablja HashTable za shranjevanje zemljevidov.LinkedHashMap uporablja HashTable skupaj s povezanim seznamom za shranjevanje zemljevida.
Razširi / izvajaHashMap razširja AbstractMap in implementira zemljevidni vmesnik.LinkedHashMap razširja Hashmap.
RazličicaHashMap je bil uveden v JDK 2.0.LinkedHashMap je bil predstavljen v JDK 4.0.
ZgorajPrimerjalno manj obremenitev.Primerjalno več režijskih stroškov, ker mora vzdrževati vrstni red vnosov zemljevida.

Opredelitev HashMap

HashMap je razred, ki se uporablja za izdelavo zemljevida. Uporablja kartični vmesnik. Razširi tudi razred AbstractMap, tako da lahko za shranjevanje vnosov v zemljevid uporabi razpršeno tabelo. Vnosi zemljevida so par, kjer je vsak ključ povezan z vrednostjo. Ključ v vnosu se uporablja za pridobivanje vrednosti, zato mora biti ključ edinstven. Zato dvojni ključi niso dovoljeni v HashMap. Toda ključ v vsakem vnosu zemljevida ima lahko drugačen tip, npr. Ključi na zemljevidu, ki jih je ustvaril HashMap, so lahko heterogeni. Struktura podatkov, ki jo HashMap uporablja za shranjevanje zemljevida, je razpršena tabela.

Vrstni red vstavljanja vnosov v HashMap se ne ohrani. Vnos vnosov v zemljevid, ustvarjen s pomočjo HashMap, temelji na razpršeni kodi, izračunani s ključi v vnosih. Če ste pomotoma vnesli podvojeni ključ v HashMap, bo nadomestila prejšnjo vrednost tega ključa z novo predlagano vrednostjo in vrnila staro vrednost. Če ni uporabljen noben podvojen ključ in ni prišlo do zamenjave, ključ vedno vrne Null. Poglejmo, kako dodati vnose na razpredelnico z naslednjim primerom.

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

Kot v zgornji kodi, lahko vidite, da sem ustvaril objekt HashMap in dodal vnose z metodo puts in ko sem natisnil predmet HashMap, vpisi niso natisnjeni v vrstnem redu, v katerem so bili vstavljeni. Zato se ne morete pretvarjati, da se bo vrstni red vnosov v HashMap vrnil. HashMap uporablja vse metode vmesnika Map in razreda AbstractMap in ne uvaja nove metode; ima svoje konstruktorje. Privzeta zmogljivost razpršene mape je 16, privzeto polnilno razmerje pa je 0, 75 .

Opredelitev LinkedHashMap

LinkedHashMap je tudi razred za ustvarjanje zemljevida. LinkedHashMap razširja razred HashMap in je bil kasneje predstavljen v HashMap v JDK različici 4.0. Ker je otroški razred razreda HashMap LinkedHashMap popolnoma enak kot razred HashMap, vključno z konstruktorji in metodami. Vendar se LinkedHashMap razlikuje v smislu, da ohranja vrstni red vstavljanja vnosov v zemljevid. Struktura podatkov, ki jo LinkedHashMap uporablja za shranjevanje zemljevida, je povezan seznam in razpršena tabela .

Poleg metod, ki jih podeduje HashMap, LinkedHashMap uvaja eno novo metodo, ki je removeEldestEntry () . Ta metoda se uporablja za odstranitev najstarejšega vnosa v zemljevidu. Privzeta zmogljivost LinkedHashMap je 16, privzeto polnilno razmerje pa je 0, 75, kar je prav tako podobno razredu HashMap.

Ključne razlike med HashMap in LinkedHashMap v Javi

  1. Najpomembnejša razlika je, da vrstni red vstavljanja v HashMap ni ohranjen, medtem ko je vrstni red vstavljanja povezave LinkedHashMap ohranjen .
  2. Struktura podatkov, ki jo uporablja HashMap za shranjevanje elementov zemljevida, je Hashtable . Po drugi strani pa je podatkovna struktura, ki jo uporablja LinkedHashMap, povezan seznam in Hashtable .
  3. Razred HashMap razširja razred AbstractMap in izvaja vmesnik Map . Vendar je razred LinkedHashMap podrejeni razred razreda HashMap, tj. Razred LinkedHashMap razširja razred HashMap.
  4. Različica HashMap je bila predstavljena v različici JDK 2.0 . Razred LinkedHashMap je bil predstavljen kasneje v različici JDK 4.0 .
  5. Primerjalno razred LinkedHashMap ima več stroškov kot HashMap, saj mora ohraniti vrstni red elementov, vstavljenih v zemljevid.

Sklep:

LinkedHashMap se sme uporabljati samo tam, kjer nas skrbi zaporedje elementov, vstavljenih v zemljevid.

Top