Atšķirība starp HashMap un LinkedHashMap Java

Autors: Laura McKinney
Radīšanas Datums: 2 Aprīlis 2021
Atjaunināšanas Datums: 10 Maijs 2024
Anonim
Atšķirība starp HashMap un LinkedHashMap Java - Tehnoloģija
Atšķirība starp HashMap un LinkedHashMap Java - Tehnoloģija

Saturs


HashMap un LinkedHashMap ir klases, diezgan līdzīgas viena otrai un tiek izmantotas kartes izveidošanai. HashMap klase paplašina AbstractMap klasi, lai izmantotu hash tabulu elementu glabāšanai kartē. LinkedHashMap klase uztur ierakstus kartē, pamatojoties uz to ievietošanas secību. Funkcija, kas atšķir HashMap un LinkedHashMap viens no otra, ir tā Hashmap neuztur saglabāto ierakstu secību kartē. No otras puses, LinkedHashMap izmanto hibrīdu datu struktūru, lai uzturētu to ierakstu secību, kuros tie tika ievietoti. Zemāk esošajā salīdzināšanas tabulā es izpētīju dažas citas atšķirības starp HashMap un LinkedHashMap.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsHashMapLinkedHashMap
PamataIevietošanas secība vietnē HashMap netiek saglabāta.Ievietošanas secība tiek saglabāta LinkedHashMap.
Datu struktūraHashMap karšu glabāšanai izmanto vietni HashTable.Lai saglabātu karti, LinkedHashMap izmanto vietni HashTable kopā ar saistīto sarakstu.
Paplašina / ieviešHashMap paplašina AbstractMap un ievieš kartes saskarni.LinkedHashMap paplašina Hashmap.
VersijaHashMap tika ieviests JDK 2.0.LinkedHashMap tika ieviests JDK 4.0.
Virs galvasSalīdzinoši mazāk virs galvas.Salīdzinoši vairāk virs galvas, jo tai ir jāsaglabā kartes ierakstu secība.


HashMap definīcija

HashMap ir klase, kuru izmanto kartes izveidošanai. Tas ievieš Karte Saskarne. Tas arī paplašina AbstractMap klasei, lai tā varētu izmantot hash tabulu, lai ierakstus saglabātu kartē. Kartes ieraksti ir a pāris, kurā katra atslēga ir saistīta ar vērtību. Ieraksta atslēgu izmanto vērtības iegūšanai, tāpēc tai jābūt unikālai. Tāpēc HashMap nav atļauts dublēt atslēgas. Bet atslēgai katrā kartes ierakstā var būt atšķirīgs tips, t.i., HashMap izveidotās kartes atslēgas var būt neviendabīgas. Datu struktūra, kuru HashMap izmanto kartes glabāšanai, ir jaucējtabula.

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


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

Tāpat kā iepriekšminētajā kodā, jūs varat redzēt, ka esmu izveidojis HashMap objektu un pievienojis ierakstus, izmantojot ievietošanas metodi, un, kad es rediģēju HashMap objektu, ieraksti netiek rediģēti tādā secībā, kādā tie tika ievietoti. Tādējādi jūs nevarat izlikties, ka atgriezīsies HashMap ierakstu secība. HashMap izmanto visas kartes saskarnes un AbstractMap klases metodes un neievieš nevienu jaunu metodi; tam ir savi konstruktori. Jaukšanas kartes noklusējuma ietilpība ir 16 un noklusējuma aizpildījuma attiecība ir 0.75.

LinkedHashMap definīcija

LinkedHashMap ir arī klases izmantošana kartes izveidošanai. LinkedHashMap paplašina HashMap klase un vēlāk tika iepazīstināta ar HashMap JDK versijā 4.0. Būt HashMap klases bērnu klasei LinkedHashMap ir tieši tāda pati kā HashMap klase, ieskaitot konstruktorus un metodes. Bet LinkedHashMap atšķiras tādā ziņā, ka tas saglabā kārtību, kādā ieraksti tiek ievietoti kartē. Datu struktūra, kuru LinkedHashMap izmanto kartes saglabāšanai, ir saistītais saraksts un hash tabula.

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

  1. Vissvarīgākā atšķirība ir tā, ka HashMap ievietošanas secība ir nav saglabājies tā kā LinkedHashMap ievietošanas secība ir konservēti.
  2. Datu struktūra, kuru HashMap izmanto, lai saglabātu kartes elementus, ir Jauki. No otras puses, LinkedHashMap izmantotā datu struktūra ir Saistītais saraksts un Jauki.
  3. HashMap klase paplašinās AbstractMap klase un īsteno Karte saskarne. Tomēr LinkedHashMap klase ir bērnu klase HashMap klase, t.i., LinkedHashMap klase paplašina HashMap klasi.
  4. HashMap klase tika ieviesta JDK 2.0 versija. LinkedHashMap klase tika ieviesta vēlāk JDK 4.0 versija.
  5. Salīdzinoši LinkedHashMap klasei ir vairāk virs galvas nekā HashMap, jo tai ir jāsaglabā kartē ievietoto elementu secība.

Secinājums:

LinkedHashMap ir jāizmanto tikai tad, ja mūs uztrauc kartē ievietoto elementu secība.