Ieteicams, 2021

Redaktora Izvēle

Starp HashMap un LinkedHashMap atšķirība Java

HashMap un LinkedHashMap ir klases, kas ir diezgan līdzīgas viena otrai un tiek izmantotas kartes izveidošanai. HashMap klase paplašina AbstractMap klasi, lai izmantotu hash tabulu, lai saglabātu kartes elementus. LinkedHashMap klase saglabā kartes ierakstus, pamatojoties uz to ievietošanas secību. Funkcija, kas atšķir HashMap un LinkedHashMap, ir tā, ka Hashmap nesaglabā saglabāto ierakstu secību kartē. No otras puses, LinkedHashMap izmanto hibrīda datu struktūru, lai saglabātu secību, kādā ieraksti tika ievadīti. Zemāk redzamajā salīdzināšanas diagrammā es izpētīju dažas citas atšķirības starp HashMap un LinkedHashMap tikai izskatu.

Salīdzinājuma diagramma

Salīdzinājuma pamatsHashMapLinkedHashMap
PamataIevietošanas secība HashMap nav saglabāta.Ievietošanas secība ir saglabāta LinkedHashMap.
Datu struktūraHashMap izmanto HashTable, lai saglabātu kartes.LinkedHashMap izmanto HashTable kopā ar Saistīto sarakstu, lai saglabātu karti.
Paplašina / ieviešHashMap paplašina AbstractMap un īsteno Map interfeisu.LinkedHashMap paplašina Hashmap.
VersijaHashMap tika ieviests JDK 2.0.LinkedHashMap tika ieviests JDK 4.0.
Pieskaitāmās izmaksasSalīdzinoši mazāk pieskaitāmo.Salīdzinoši vairāk pieskaitāmo, jo tai jāsaglabā kartes ierakstu secība.

HashMap definīcija

HashMap ir klase, ko izmanto, lai izveidotu karti. Tā īsteno Map Interface. Tā arī paplašina AbstractMap klasi, lai tā varētu izmantot hash tabulu, lai saglabātu ierakstus kartē. Kartes ieraksti ir pāris, kur katra atslēga ir saistīta ar vērtību. Ieraksta atslēga tiek izmantota vērtības iegūšanai, tāpēc atslēgai jābūt unikālai. Tāpēc HashMap nav atļauts dublēt atslēgas. Taču katra kartes ieraksta atslēgai var būt atšķirīgs veids, proti, HashMap izveidotās kartes atslēgas var būt neviendabīgas. Datu struktūra, ko HashMap izmanto, lai saglabātu karti, ir hash tabula.

HashMap ierakstu ievietošanas secība netiek saglabāta. Ierakstu ievietošana kartē, kas izveidota, izmantojot HashMap, ir balstīta uz maiņas kodu, ko aprēķina ar ierakstiem ievadītajiem taustiņiem. Ja kļūdas dēļ ievadījāt dublējošo atslēgu HashMap, tas aizvietos iepriekšējās atslēgas vērtību ar jauno piedāvāto vērtību un atgriezīs veco vērtību. Ja netiek izmantots dublējošais taustiņš un nav notikusi nekāda nomaiņa, atslēga vienmēr atgriež Null. Ļaujiet mums redzēt, kā pievienot ierakstus hash kartē ar šādu piemēru.

 Hashmap hm = jauns Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordānija", 200); System.out.println (hm); / * izeja * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordānija = 200} 

Kā iepriekš minētajā kodā, jūs varat redzēt, ka es izveidoju HashMap objektu un pievienoju ierakstus, izmantojot ieliktņu metodi, un kad es izdrukāju HashMap objektu, ieraksti netiek drukāti tādā secībā, kādā tie tika ievietoti. Tādējādi jūs nevarat izlikties, ka HashMap ierakstu secība atgriezīsies. HashMap izmanto visas Map interfeisa un AbstractMap klases metodes un neievieš jaunas metodes; tai ir savi konstruktori. Noklusējuma kartes jauda ir 16 un noklusējuma aizpildīšanas koeficients ir 0, 75 .

LinkedHashMap definīcija

LinkedHashMap ir arī klases izmantošana, lai izveidotu karti. LinkedHashMap paplašina HashMap klasi un vēlāk to ieviesa HashMap versijā 4.0. Būt HashMap klases bērna klasei LinkedHashMap ir tieši tāds pats kā HashMap klase, ieskaitot konstruktorus un metodes. Bet, LinkedHashMap atšķiras tādā ziņā, ka saglabā kārtību, kādā kartes tiek ievietotas. Datu struktūra, ko LinkedHashMap izmanto, lai saglabātu karti, ir saistītais saraksts un hash tabula .

Papildus HashMap mantotajām metodēm, LinkedHashMap ievieš jaunu metodi, kas ir noņemtaEldestEntry () . Šo metodi izmanto, lai noņemtu vecāko ierakstu kartē. LinkedHashMap noklusējuma ietilpība ir 16, un noklusējuma aizpildīšanas attiecība ir 0, 75, kas ir līdzīga arī HashMap klasei.

Galvenās atšķirības starp HashMap un LinkedHashMap Java

  1. Vissvarīgākā atšķirība ir tā, ka HashMap ievietošanas secība netiek saglabāta, bet LinkedHashMap ievietošanas secība ir saglabāta .
  2. Datu struktūra, ko HashMap izmanto, lai saglabātu kartes elementus, ir Hashtable . No otras puses, datu struktūra, ko izmanto LinkedHashMap, ir Saistīts saraksts un Hashtable .
  3. HashMap klase paplašina AbstractMap klasi un īsteno Map interfeisu. Tomēr LinkedHashMap klase ir HashMap klases bērnu klase, ti, LinkedHashMap klase paplašina HashMap klasi.
  4. HashMap klase tika ieviesta JDK 2.0 versijā. LinkedHashMap klase tika ieviesta vēlāk JDK 4.0 versijā.
  5. Salīdzinoši LinkedHashMap klasē ir vairāk pieskaitāmās izmaksas nekā HashMap, jo tai ir jāsaglabā kartē ievietoto elementu secība.

Secinājums:

LinkedHashMap ir jāizmanto tikai tad, ja esam noraizējušies par kartē ievietoto elementu secību.

Top