HashMap i LinkedHashMap

Anonim

HashMap i LinkedHashMap dvije su od najčešćih i sveobuhvatnih implementacija Mapova na Java platformi. Oni su u osnovi hash-based classes, vrlo slični jedni drugima i koriste se za stvaranje Map. Sučelje mapa posljednji je od glavnih okvira za prikupljanje zbirki koji definira operacije koje podržava skup ključnih vrijednosti u kojima su ključevi jedinstveni. Te implementacije karte temelje se na algoritmu raspršivanja. Dok klasa HashMap implementira neuredne karte, klasa LinkedHashMap implementira naručene karte. Implementacija LinkedHashMap je podrazred HashMap klase što znači da nasljeđuje značajke klase HashMap. Nema puno razlike između njih u pogledu izvedbe. Pogledajmo.

Što je HashMap?

HashMap je jedan od najčešćih i među četiri opće namjene implementacije sučelja Map u Java temeljene na algoritmu raspršivanja. To je analogno postavljenoj skupini HashSet, premda elementi nisu uredni u oba razreda. Implementira se kao tablica hash, ali za razliku od LinkedHashMap, ona ne održava nijednu narudžbu na ključevima ili vrijednostima. Općenito, HashMap pruža konstantno vrijeme za stavljanje i dobivanje. Klasa nije sigurna za nit, ali dopušta jedan null ključ i više null vrijednosti. Budući da ne održava redoslijed iteracije, to zahtijeva manje memorije.

Što je LinkedHashMap?

LinkedHashMap je među četiri opće namjene implementacije sučelja Karta koja je podrazred HashMap klase što znači da nasljeđuje njegove značajke. Iako je vrlo sličan HashMapu u smislu izvedbe, osim što održava redoslijed umetanja ključeva, bilo po tome što su ključevi umetnuti u kartu ili redoslijed kojim se pristupaju unosi u Kartama. Ojačava ugovor svoje roditeljske klase jamstvom redoslijeda u kojem iteratori vraćaju svoje elemente. Međutim, to zahtijeva više memorije nego HashMap jer održava dvostruko povezani popis u Javi.

Razlika između HashMap i LinkedHashMap

  1. Osnove HashMap vs. LinkedHashMap

HashMap je implementacija mapovnog sučelja Java u Java. Karte su zbirka parova ključ / vrijednost i upotrebljavaju se kada su popisi u poredanim zbirkama. HashMap je klasa zbirke koja pohranjuje vrijednost u parovima ključ / vrijednost. Jednostavnim riječima, mapira ključeve vrijednostima, što znači da može pronaći vrijednost na temelju ključa. LinkedHashMap je povezana lista implementacije sučelja mapa baš kao i HashMap, osim što održava narečene elemente umetnute u nju. To je podrazred HashMap koji nasljeđuje njegove značajke. LinkedHashMap poboljšava ugovor svoje roditeljske klase, HashMap, jamstvom redoslijeda u kojem iteratori vraćaju svoje elemente.

  1. Iteracija Reda

Ključna razlika između HashMap i LinkedHashMap je red. Elementi HashMap-a nisu u redu, potpuno slučajni, a naređeni su elementi LinkedHashMap. Unosi LinkedHashMap su u ključnom redu za umetanje, što je red u kojem su ključevi umetnuti u kartu. To znači da je prvi ključ umetnut u mapu naveden prvi, tako da vrijednost povezana s njom, a zadnji unos umetnut u zadnji popisani. LinkedHashMap ima predvidljivu narudžbu iteracije, što znači da također može zadržati svoje elemente u poretku pristupa, što je red u kojem se pristupaju unosi.

  1. izvršenje

Obje grupe HashMap i LinkedHashMap koriste hashing za implementaciju Map sučelja u Java, osim što je HashMap implementiran kao hash tablica, dok LinkedHashMap održava dvostruko povezani popis kanala koji prikazuju sve svoje unose. Zbog toga LinkedHashMap zahtijeva više memorije nego HashMap jer za razliku od HashMap, ona održava naredbu. Uklanja kaotične narudžbe HashMapom, bez ikakvih dodatnih troškova koji bi se dogodili drukčije s TreeMapom. Osim toga, klasa LinkedHashMap vrlo je slična HashMap klasi u mnogim aspektima kao što su sinkronizacija i null tipke / vrijednosti jer oba dopuštaju jedan null ključ i više null vrijednosti.

  1. Izvedba za HashMap vs. LinkedHashMap

Iako oba klasa pružaju usporedive izvedbe, vjeruje se da je HashMap klasa preferirani izbor ako narudžba nije problem jer ne jamči za redoslijed iteracije karte. Radnje kao što su dodavanje, uklanjanje ili pronalaženje unosa na temelju ključa su stalno vrijeme, budući da imaju ključ. Dakle, dodavanje, uklanjanje i pronalaženje unosa u LinkedHashMapu može biti malo sporije nego u HashMapu jer održava dvostruko povezani popis kanala u Javi. Osim toga, HashMap zahtijeva manje memorije od LinkedHashMap jer nema reda.

HashMap vs LinkedHashMap: usporedni prikaz

Sažetak HashMap vs. LinkedHashMap

Iako su obje vrste HashMap i HashMap gotovo slične u izvedbi, HashMap zahtijeva manje memorije od LinkedHashMap jer ne jamči redoslijed mapiranja, što čini dodavanje, uklanjanje i pronalaženje unosa u HashMapu relativno brže nego raditi isto s LinkedHashMap. Međutim, ključna razlika između dva reda je: elementi HashMap nisu u redu, dok su elementi LinkedHashMap u ključnom redoslijedu umetanja prema zadanim postavkama, što znači redoslijed kojim se ključevi umetaju u kartu. LinkedHashMap također može održavati svoje elemente u poretku pristupa što znači redoslijed kojim se pristupaju unosi.Kao i kod LinkedHashMap, dvostruko povezani popis mora biti zadržan, ima manje performanse nego HashMap.