Ero Java-sovelluksen HashMap ja LinkedHashMap välillä

Kirjoittaja: Laura McKinney
Luomispäivä: 2 Huhtikuu 2021
Päivityspäivä: 10 Saattaa 2024
Anonim
Ero Java-sovelluksen HashMap ja LinkedHashMap välillä - Tekniikka
Ero Java-sovelluksen HashMap ja LinkedHashMap välillä - Tekniikka

Sisältö


HashMap ja LinkedHashMap ovat luokkia, melko samanlaisia ​​toisiinsa ja niitä käytetään kartan luomiseen. HashMap-luokka laajentaa AbstractMap-luokan käyttämään hash-taulukkoa elementtien tallentamiseen karttaan. LinkedHashMap-luokka ylläpitää merkinnät kartalla niiden lisäysjärjestyksen perusteella. Ominaisuus, joka erottaa HashMapin ja LinkedHashMapin toisistaan, on se HashMap ei yllä tallennettujen merkintöjen järjestystä kartalla. Toisaalta, LinkedHashMap käyttää hybrididatarakennetta ylläpitääksesi merkintöjen järjestystä, johon ne on lisätty. Alla olevassa vertailukaaviossa olen tutkinut joitain muita eroja HashMapin ja LinkedHashMapin välillä.

  1. Vertailutaulukko
  2. Määritelmä
  3. Keskeiset erot
  4. johtopäätös

Vertailutaulukko

Vertailun perusteetHashMapLinkedHashMap
perustiedotLisäysjärjestys HashMapissa ei säily.Lisäysjärjestys säilytetään LinkedHashMapissa.
TietorakenneHashMap käyttää HashTablea karttojen tallentamiseen.LinkedHashMap käyttää HashTablea ja Linked List -sovellusta kartan tallentamiseen.
Ulottuu / ImplementsHashMap laajentaa AbstractMapia ja toteuttaa Kartta-käyttöliittymän.LinkedHashMap laajentaa hasakarttaa.
VersioHashMap esiteltiin JDK 2.0: ssa.LinkedHashMap esiteltiin JDK 4.0: ssa.
yläpuolellaVerrattain vähemmän yleiskustannuksia.Verrattain enemmän yläpuolella, koska sen on ylläpidettävä karttatietojen järjestystä.


Määritelmä HashMap

HashMap on luokka, jota käytetään kartan luomiseen. Se toteuttaa Kartta Käyttöliittymä. Se laajentaa myös AbstractMap luokkaa, jotta se voi käyttää hash-taulukkoa merkintöjen tallentamiseen kartalle. Kartan merkinnät ovat a pari, jossa kukin avain liittyy arvoon. Merkinnän avainta käytetään arvon noutamiseen, joten avaimen on oltava yksilöivä. Siksi päällekkäisiä avaimia ei sallita HashMapissa. Mutta avain jokaisessa kartan merkinnässä voi olla erityyppistä, ts. HashMapin luomassa kartassa olevat avaimet voivat olla heterogeenisiä. Tietorakenne, jota HashMap käyttää kartan tallentamiseen, on hash-taulukko.

Merkintöjen lisäysjärjestys HashMap-sovelluksessa ei säily. Merkintöjen lisääminen HashMap-sovelluksella luodulle kartalle perustuu merkintöjen näppäimien laskemaan hash-koodiin. Jos syötit vahingossa kopioavaimen HashMapiin, se korvaa kyseisen avaimen aiemman arvon uudella ehdotetulla arvolla ja palauttaa vanhan arvon. Jos päällekkäistä avainta ei käytetä eikä korvausta ole suoritettu, näppäin palauttaa aina nollan. Katsotaanpa, kuinka lisätään merkinnät hajakarttaan 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.ln (hm); / * lähtö * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordania = 200}

Kuten yllä olevassa koodissa, voit nähdä, että olen luonut HashMap-objektin ja lisännyt merkinnät put-menetelmällä. Kun editoin HashMap-objektia, merkintöjä ei editoida lisäysjärjestyksessä. Siksi, et voi teeskennellä, että HashMap-tietokannan merkintöjen järjestys palaa. HashMap käyttää kaikkia Map-käyttöliittymän ja AbstractMap-luokan menetelmiä eikä ota käyttöön uutta menetelmää; sillä on omat rakentajat. Hash-kartan oletuskapasiteetti on 16 ja oletuksena täyttösuhde on 0.75.

Määritelmä LinkedHashMap

LinkedHashMap on myös luokan käyttö kartan luomiseen. LinkedHashMap laajentaa HashMap luokan ja esiteltiin myöhemmin HashMapille JDK-versiossa 4.0. LinkedHashMap-luokan HashMap-luokan lapsiluokka on täsmälleen sama kuin HashMap-luokka, mukaan lukien rakentajat ja menetelmät. Mutta LinkedHashMap eroaa siinä mielessä, että se ylläpitää merkintöjen lisäämisjärjestystä kartalle. Tietorakenne, jota LinkedHashMap käyttää kartan tallentamiseen, on linkitetty luettelo ja hash-pöytä.

HashMapin perimien menetelmien lisäksi LinkedHashMap esittelee yhden uuden menetelmän, joka on removeEldestEntry (). Tätä menetelmää käytetään kartan vanhimman merkinnän poistamiseen. LinkedHashMapin oletuskapasiteetti on 16 ja oletuksena täytetty suhde on 0,75, joka on myös samanlainen kuin HashMap-luokka.

  1. Tärkein ero on, että HashMap-lisäysjärjestys on ei säilynyt taas LinkedHashMap-lisäysjärjestys on säilytetty.
  2. Tietorakenne, jota HashMap käyttää kartan elementtien tallentamiseen, on Hashtable. Toisaalta LinkedHashMap: n käyttämä tietorakenne on Linkitetty luettelo ja Hashtable.
  3. HashMap-luokka laajenee AbstractMap luokan ja toteuttaa Kartta käyttöliittymä. LinkedHashMap-luokka on kuitenkin HashMap luokka eli LinkedHashMap-luokka laajentaa HashMap-luokkaa.
  4. HashMap-luokka otettiin käyttöön JDK 2.0 versio. LinkedHashMap-luokka otettiin käyttöön myöhemmin JDK 4.0 versio.
  5. Verrattain LinkedHashMap-luokalla on enemmän yläpuolella kuin HashMapilla, koska sen on ylläpidettävä karttaan lisättyjen elementtien järjestystä.

johtopäätös:

LinkedHashMapia tulee käyttää vain silloin, kun olemme huolissamme karttaan lisättyjen elementtien järjestyksestä.