Ero Java-sovelluksen HashMap ja LinkedHashMap välillä
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ä.
- Vertailutaulukko
- Määritelmä
- Keskeiset erot
- johtopäätös
Vertailutaulukko
Vertailun perusteet | HashMap | LinkedHashMap |
---|---|---|
perustiedot | Lisäysjärjestys HashMapissa ei säily. | Lisäysjärjestys säilytetään LinkedHashMapissa. |
Tietorakenne | HashMap käyttää HashTablea karttojen tallentamiseen. | LinkedHashMap käyttää HashTablea ja Linked List -sovellusta kartan tallentamiseen. |
Ulottuu / Implements | HashMap laajentaa AbstractMapia ja toteuttaa Kartta-käyttöliittymän. | LinkedHashMap laajentaa hasakarttaa. |
Versio | HashMap esiteltiin JDK 2.0: ssa. | LinkedHashMap esiteltiin JDK 4.0: ssa. |
yläpuolella | Verrattain 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 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. 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.
Määritelmä LinkedHashMap
- Tärkein ero on, että HashMap-lisäysjärjestys on ei säilynyt taas LinkedHashMap-lisäysjärjestys on säilytetty.
- Tietorakenne, jota HashMap käyttää kartan elementtien tallentamiseen, on Hashtable. Toisaalta LinkedHashMap: n käyttämä tietorakenne on Linkitetty luettelo ja Hashtable.
- HashMap-luokka laajenee AbstractMap luokan ja toteuttaa Kartta käyttöliittymä. LinkedHashMap-luokka on kuitenkin HashMap luokka eli LinkedHashMap-luokka laajentaa HashMap-luokkaa.
- HashMap-luokka otettiin käyttöön JDK 2.0 versio. LinkedHashMap-luokka otettiin käyttöön myöhemmin JDK 4.0 versio.
- 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ä.