Skirtumas tarp „HashMap“ ir „LinkedHashMap“ „Java“

Autorius: Laura McKinney
Kūrybos Data: 2 Balandis 2021
Atnaujinimo Data: 10 Gegužė 2024
Anonim
Skirtumas tarp „HashMap“ ir „LinkedHashMap“ „Java“ - Technologija
Skirtumas tarp „HashMap“ ir „LinkedHashMap“ „Java“ - Technologija

Turinys


„HashMap“ ir „LinkedHashMap“ yra klasės, gana panašios viena į kitą ir yra naudojamos kuriant žemėlapį. „HashMap“ klasė išplečia „AbstractMap“ klasę, naudodama maišos lentelę elementams saugoti žemėlapyje. „LinkedHashMap“ klasė palaiko įrašus žemėlapyje remdamasi jų įterpimo tvarka. Funkcija, išskirianti „HashMap“ ir „LinkedHashMap“ viena nuo kitos, yra ta Hashmap neišlaiko išsaugotų įrašų tvarkos žemėlapyje. Iš kitos pusės, „LinkedHashMap“ naudoja hibridinę duomenų struktūrą įrašų, į kuriuos jie buvo įterpti, tvarkai palaikyti. Žemiau esančioje palyginimų diagramoje išnagrinėjau keletą kitų skirtumų tarp „HashMap“ ir „LinkedHashMap“.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindas„HashMap“„LinkedHashMap“
PagrindinisĮterpimo tvarka „HashMap“ neišsaugoma.Įterpimo tvarka išsaugoma „LinkedHashMap“.
Duomenų struktūra„HashMap“ žemėlapiams saugoti naudoja „HashTable“.„LinkedHashMap“ žemėlapiui saugoti naudoja „HashTable“ kartu su „Linked List“.
Pratęsia / įgyvendina„HashMap“ praplečia „AbstractMap“ ir įgyvendina žemėlapio sąsają.„LinkedHashMap“ praplečia „Hashmap“.
Versija„HashMap“ buvo pristatytas JDK 2.0.„LinkedHashMap“ buvo pristatytas JDK 4.0.
Virš galvosPalyginti mažiau pridėtinių išlaidų.Palyginti daugiau pridėtinių išlaidų, nes ji turi palaikyti žemėlapio įrašų tvarką.


Apibrėžimas HashMap

„HashMap“ yra klasė, kuri naudojama kuriant žemėlapį. Tai įgyvendina Žemėlapis Sąsaja. Tai taip pat išplečia AnotacijaMap klasę, kad ji galėtų naudoti maišos lentelę įrašams žemėlapyje saugoti. Žemėlapio įrašai yra a pora, kur kiekvienas raktas yra susietas su verte. Įrašo raktas naudojamas reikšmei nuskaityti, todėl raktas turi būti unikalus. Štai kodėl raktų kopijos neleidžiamos „HashMap“. Bet kiekvieno žemėlapio įrašo raktas gali būti skirtingo tipo, t. Y. „HashMap“ sukurto žemėlapio raktai gali būti nevienalytiški. Duomenų struktūra, kurią „HashMap“ naudoja žemėlapiui saugoti, yra maišos lentelė.

Įrašų įterpimo tvarka „HashMap“ neišsaugota. Įrašų įterpimas į žemėlapį, sukurtą naudojant „HashMap“, pagrįstas maišos kodu, apskaičiuotu įrašų klavišais. Jei per klaidą „HashMap“ įvedėte rakto dublikatą, jis pakeis ankstesnę to rakto vertę nauja siūloma reikšme ir grąžins senąją vertę. Jei nenaudojamas raktas, kurio kopija nebuvo padaryta, ir jo nepakeitė, raktas visada bus rodomas nuliui. Pažiūrėkime, kaip įtraukti įrašus į maišos žemėlapį, pateikdami šį pavyzdį.


„Hashmap hm“ = nauja „Hashmap“ (); hm.put („Ajay“, 275); hm.put („Vijay“, 250); hm.put („Jonny“, 150); hm.put („Jordan“, 200); System.out.ln (hm); / * išėjimas * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}

Kaip ir aukščiau esančiame kode, galite pamatyti, kad sukūriau „HashMap“ objektą ir pridėjau įrašus naudodamas įdėjimo metodą. Kai redagavau „HashMap“ objektą, įrašai nebuvo taisomi tokia tvarka, kokia jie buvo įterpti. Taigi negalite apsimesti, kad įrašai HashMap sistemoje bus grąžinti. „HashMap“ naudoja visus žemėlapio sąsajos ir „AbstractMap“ klasės metodus ir nepristato jokio naujo metodo; ji turi savo konstruktorius. Numatytoji maišos žemėlapio talpa yra 16 o numatytasis užpildymo santykis yra 0.75.

„LinkedHashMap“ apibrėžimas

„LinkedHashMap“ taip pat naudojama klasėje žemėlapiui kurti. „LinkedHashMap“ pratęsia „HashMap“ klasė ir vėliau buvo supažindinta su „HashMap“ JDK 4.0 versijoje. Būti „HashMap“ klasės vaikų klase „LinkedHashMap“ yra visiškai tokia pati kaip „HashMap“ klasė, įskaitant konstruktorius ir metodus. Tačiau „LinkedHashMap“ skiriasi ta prasme, kad palaiko įrašų įterpimo į žemėlapį tvarką. Duomenų struktūra, kurią „LinkedHashMap“ naudoja žemėlapiui saugoti, yra susietas sąrašas ir maišos stalas.

Be metodų, kuriuos paveldėjo „HashMap“, „LinkedHashMap“ pristato vieną naują metodą, kuris yra removeEldestEntry (). Šis metodas naudojamas pašalinti seniausią įrašą žemėlapyje. Numatytoji „LinkedHashMap“ talpa yra 16, o numatytasis užpildymo santykis yra 0,75, kuris taip pat panašus į „HashMap“ klasę.

  1. Svarbiausias skirtumas yra tas, kad „HashMap“ įterpimo tvarka yra neišsaugotas kadangi „LinkedHashMap“ įterpimo tvarka yra konservuoti.
  2. Duomenų struktūra, kurią „HashMap“ naudoja žemėlapio elementams saugoti, yra Puikus. Kita vertus, „LinkedHashMap“ naudojama duomenų struktūra Susietas sąrašas ir Puikus.
  3. „HashMap“ klasė plečiasi AnotacijaMap klasė ir įgyvendina Žemėlapis sąsaja. Tačiau „LinkedHashMap“ klasė yra vaikų klasė „HashMap“ klasė, ty „LinkedHashMap“ klasė pratęsia „HashMap“ klasę.
  4. „HashMap“ klasė buvo įvesta JDK 2.0 versija. „LinkedHashMap“ klasė buvo pristatyta vėliau JDK 4.0 versija.
  5. Palyginti „LinkedHashMap“ klasė turi daugiau pridėtinių išlaidų nei „HashMap“, nes ji turi palaikyti įterptų elementų tvarką žemėlapyje.

Išvada:

„LinkedHashMap“ turi būti naudojamas tik tada, kai mums rūpi į žemėlapį įterptų elementų seka.