Suositeltava, 2019

Toimituksen Valinta

HashMapin ja LinkedHashMapin välinen ero Java: ssa

HashMap ja LinkedHashMap ovat luokkia, jotka ovat melko samankaltaisia ​​ja joita käytetään kartan luomiseen. HashMap-luokka laajentaa AbstractMap-luokkaa käyttämällä hash-taulukkoa elementtien tallentamiseen karttaan. LinkedHashMap-luokka säilyttää kartassa olevat merkinnät niiden lisäysjärjestyksen perusteella. HashMapin ja LinkedHashMapin toisistaan ​​erottava ominaisuus on, että Hashmap ei säilytä tallennettujen merkintöjen järjestystä kartassa. Toisaalta LinkedHashMap käyttää hybriditietorakennetta ylläpitämään niiden merkintöjen järjestystä, joissa ne on lisätty. Alla olevassa vertailukartassa tutkittiin joitakin muita eroja HashMapin ja LinkedHashMapin välillä.

Vertailukaavio

Vertailun perusteetHashMapLinkedHashMap
perustiedotLisäysjärjestystä HashMapissa ei säilytetä.Lisäysjärjestys säilyy LinkedHashMapissa.
TietorakenneHashMap käyttää HashTableia karttojen tallentamiseen.LinkedHashMap käyttää HashTable-ohjelmaa yhdessä linkitetyn luettelon kanssa kartan tallentamiseen.
Ulottuu / ImplementsHashMap laajentaa AbstractMap-sovellusta ja toteuttaa Map-käyttöliittymän.LinkedHashMap laajentaa Hashmapia.
VersioHashMap otettiin käyttöön JDK 2.0: ssa.LinkedHashMap otettiin käyttöön JDK 4.0: ssa.
yläpuolellaVerrattain vähemmän yleiskustannuksia.Verrattain enemmän yleiskustannuksia, koska sen on säilytettävä karttakirjoitusten järjestys.

Määritelmä HashMap

HashMap on luokka, jota käytetään kartan luomiseen. Se toteuttaa Map Interface -ohjelmaa. Se myös laajentaa AbstractMap- luokkaa niin, että se voi käyttää hash-taulukkoa tallentamaan merkinnät kartalle. Kartan merkinnät ovat pari, jossa jokainen avain liittyy arvoon. Merkinnän avainta käytetään arvon noutamiseen, joten avaimen on oltava ainutlaatuinen. Siksi HashMapissa ei ole sallittuja päällekkäisiä avaimia. Mutta kartan jokaisen merkinnän avaimella voi olla erilainen tyyppi, eli HashMapin luoman kartan avaimet voivat olla heterogeenisiä. HashMapin käyttämä kartta- kartan käyttämä tietorakenne on hash-taulukko.

HashMap-tiedoston merkintöjen järjestystä ei säilytetä. Merkintöjen lisääminen karttaan, joka on luotu HashMap-sovelluksella, perustuu merkintöjen avaimien laskemiin hajautuskoodeihin. Jos olet vahingossa syöttänyt päällekkäisen avaimen HashMapiin, se korvaa kyseisen avaimen edellisen arvon ehdotetulla uudella arvolla ja palauttaa vanhan arvon. Jos ei käytetä päällekkäistä avainta eikä korvausta ole tapahtunut, avain palauttaa aina Nullin. Katsotaanpa, miten lisätään merkinnät hash-kartalle seuraavan esimerkin avulla.

 Hashmap hm = uusi Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.println (hm); / * lähtö * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordania = 200} 

Kuten yllä mainitussa koodissa, näet, että olen luonut HashMap-objektin ja lisännyt merkinnät käyttämällä puts-menetelmää ja kun painoin HashMap-objektin, merkinnät eivät tulostu siinä järjestyksessä kuin ne on lisätty. Näin ollen et voi teeskennellä, että HashMap-kortin kirjojen järjestys palaa. HashMap käyttää kaikkia Map-käyttöliittymän ja AbstractMap-luokan menetelmiä eikä ota käyttöön mitään uutta menetelmää. sillä on omat rakentajansa. Hajautuskartan oletuskapasiteetti on 16 ja oletusarvon täyttösuhde on 0, 75 .

Määritelmä LinkedHashMap

LinkedHashMap on myös luokan käyttö kartan luomiseen. LinkedHashMap laajentaa HashMap- luokkaa ja esitteli sen myöhemmin HashMapille JDK-versiossa 4.0. HashMap-luokan lapsiluokka LinkedHashMap on täsmälleen sama kuin HashMap-luokka, mukaan lukien rakentajat ja menetelmät. LinkedHashMap eroaa kuitenkin toisistaan ​​siinä mielessä, että se säilyttää merkinnän lisäämisen järjestyksessä kartassa. LinkedHashMapin käyttämä kartta on tallennettu linkitettyyn luetteloon ja hash-taulukkoon .

HashMapin perimien menetelmien lisäksi LinkedHashMap esittelee yhden uuden menetelmän, joka poistaa RemoveEldestEntry () . Tätä menetelmää käytetään poistamaan kartan vanhin merkintä. LinkedHashMapin oletuskapasiteetti on 16, ja oletusarvon täyttösuhde on 0, 75, joka on myös samanlainen kuin HashMap-luokka.

Keskeiset erot HashMapin ja LinkedHashMapin välillä Javaissa

  1. Tärkein ero on se, että HashMapin lisäysjärjestystä ei säilytetä, kun taas LinkedHashMapin lisäysjärjestys säilyy .
  2. HashMapin käyttämä tietorakenne kartan elementtien tallentamiseksi on Hashtable . Toisaalta LinkedHashMapin käyttämä datarakenne on Linked list ja Hashtable .
  3. HashMap-luokka laajentaa AbstractMap- luokkaa ja toteuttaa Map- käyttöliittymän. LinkedHashMap-luokka on kuitenkin HashMap- luokan lapsiluokka eli LinkedHashMap-luokka laajentaa HashMap-luokkaa.
  4. HashMap-luokka otettiin käyttöön JDK 2.0 -versiossa. LinkedHashMap-luokka otettiin käyttöön myöhemmin JDK 4.0 -versiossa.
  5. Vertailevasti LinkedHashMap-luokan luokassa on enemmän kuin HashMap, koska sen on säilytettävä kartassa olevien elementtien järjestys.

johtopäätös:

LinkedHashMapia on käytettävä vain silloin, kun olemme huolissamme kartassa olevien elementtien järjestyksestä.

Top