Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp „HashMap“ ir „LinkedHashMap“ Java sistemoje

„HashMap“ ir „LinkedHashMap“ yra klasės, gana panašios viena į kitą ir naudojamos kuriant žemėlapį. „HashMap“ klasė praplečia „AbstractMap“ klasę, norėdama išsaugoti žemėlapio elementus. „LinkedHashMap“ klasė išsaugo žemėlapio įrašus pagal jų įterpimo tvarką. Funkcija, kuri išskiria HashMap ir LinkedHashMap viena nuo kitos, yra ta, kad Hashmap nesaugo išsaugotų įrašų eilės tvarka žemėlapyje. Kita vertus, „ LinkedHashMap“ naudoja hibridinių duomenų struktūrą, kad išlaikytų įrašų, į kuriuos jie buvo įtraukti, tvarką. Žemiau pateiktoje palyginimo diagramoje išanalizavau kai kuriuos kitus skirtumus tarp „HashMap“ ir „LinkedHashMap“ tiesiog atrodo.

Palyginimo diagrama

Palyginimo pagrindas„HashMap“„LinkedHashMap“
PagrindinisĮterpimo tvarka „HashMap“ nėra išsaugota.Įterpimo tvarka išsaugoma „LinkedHashMap“.
Duomenų struktūra„HashMap“ naudoja „HashTable“ žemėlapius.„LinkedHashMap“ naudoja „HashTable“ kartu su susietu sąrašu, kad išsaugotų žemėlapį.
Plėtiniai / Įrankiai„HashMap“ praplečia „AbstractMap“ ir įgyvendina žemėlapio sąsają.„LinkedHashMap“ praplečia „Hashmap“.
Versija„HashMap“ buvo įdiegta JDK 2.0.„LinkedHashMap“ buvo įdiegta JDK 4.0.
Pridėtinės išlaidosPalyginti mažiau pridėtinės vertės.Palyginti daugiau, nes jis turi išlaikyti žemėlapio įrašų tvarką.

„HashMap“ apibrėžimas

HashMap yra klasė, naudojama žemėlapiui sukurti. Jis įgyvendina žemėlapio sąsają. Ji taip pat praplečia „ AbstractMap“ klasę, kad ji galėtų naudoti maišos lentelę įrašams žemėlapyje. Žemėlapio įrašai yra pora, kurioje kiekvienas raktas yra susijęs su verte. Įrašo raktas naudojamas norint gauti vertę, todėl raktas turi būti unikalus. Štai kodėl HashMap neleidžia dublikatų raktų. Tačiau kiekvieno žemėlapio įrašo raktas gali turėti skirtingą tipą, ty HashMap sukurto žemėlapio raktai gali būti nevienodi. Duomenų struktūra, naudojama „HashMap“ žemėlapiui išsaugoti, yra maišos lentelė.

Įrašų įterpimo tvarka „HashMap“ nėra išsaugota. Įrašų įtraukimas į žemėlapį, sukurtą naudojant „HashMap“, yra pagrįstas maišos kodu, apskaičiuotu įrašų raktais. Jei per klaidą įvedėte dvigubą raktą į „HashMap“, tai pakeis ankstesnę šio rakto vertę su nauja siūloma verte ir grąžins senąją vertę. Jei nenaudojamas pasikartojančio rakto naudojimas ir nepakeista, raktas visada grąžina „Null“. Pažiūrėkime, kaip pridėti įrašus į maišos žemėlapį su šiuo pavyzdžiu.

 Hashmap hm = naujas Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordanija", 200); System.out.println (hm); / * išėjimas * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordanija = 200} 

Kaip ir pirmiau minėtame kode, galite matyti, kad sukūriau „HashMap“ objektą ir pridėjau įrašus naudojant „puts“ metodą ir kai spausdinau „HashMap“ objektą, įrašai nėra spausdinami tokia tvarka, kokia jie buvo įterpti. Taigi, jūs negalite apsimesti, kad „HashMap“ įrašų eilės tvarka bus grąžinta. „HashMap“ naudoja visus žemėlapio sąsajos ir AbstractMap klasės metodus ir nepateikia jokio naujo metodo; ji turi savo konstruktorių. Numatytasis maišos žemėlapio pajėgumas yra 16 ir numatytasis užpildymo koeficientas yra 0, 75 .

„LinkedHashMap“ apibrėžimas

„LinkedHashMap“ taip pat yra klasės naudojimas kuriant žemėlapį. „LinkedHashMap“ praplečia „ HashMap“ klasę ir vėliau buvo pristatyta „HashMap“ programoje „JDK 4.0“. Būdama HashMap klasės vaikų klasė, „LinkedHashMap“ yra lygiai tokia pati kaip „HashMap“ klasė, įskaitant konstruktorius ir metodus. Tačiau „LinkedHashMap“ skiriasi tuo, kad ji išlaiko įrašų įterpimo į žemėlapį tvarką. Duomenų struktūra, kurią naudoja „LinkedHashMap“ žemėlapiui išsaugoti, yra susietas sąrašas ir maišos lentelė .

Be „HashMap“ paveldėtų metodų, „LinkedHashMap“ pristato vieną naują metodą, kuris yra pašalintasEldestEntry () . Šis metodas naudojamas pašalinti seniausią įrašą žemėlapyje. Numatytasis „LinkedHashMap“ pajėgumas yra 16, o numatytasis užpildymo koeficientas yra 0, 75, kuris yra panašus į „HashMap“ klasę.

Pagrindiniai skirtumai tarp „HashMap“ ir „LinkedHashMap“ „Java“

  1. Svarbiausias skirtumas yra tas, kad „HashMap“ įterpimo tvarka nėra išsaugota, o „LinkedHashMap“ įterpimo tvarka yra išsaugota .
  2. HashMap duomenų struktūra, skirta žemėlapio elementams išsaugoti, yra Hashtable . Kita vertus, „LinkedHashMap“ naudojama duomenų struktūra yra susietas sąrašas ir „ Hashtable“ .
  3. „HashMap“ klasė praplečia „ AbstractMap“ klasę ir įgyvendina žemėlapio sąsają. Tačiau „LinkedHashMap“ klasė yra HashMap klasės vaikų klasė, ty „LinkedHashMap“ klasė praplečia „HashMap“ klasę.
  4. „HashMap“ klasė buvo įdiegta JDK 2.0 versijoje. „LinkedHashMap“ klasė buvo įdiegta vėliau JDK 4.0 versijoje.
  5. Palyginamai „LinkedHashMap“ klasė turi daugiau pridėtinių nei „HashMap“, nes ji turi išlaikyti į žemėlapį įtrauktų elementų tvarką.

Išvada:

„LinkedHashMap“ turi būti naudojamas tik ten, kur esame susirūpinę dėl žemėlapio elementų sekos.

Top