Preporučeno, 2020

Izbor Urednika

Razlika između HashMap i LinkedHashMap u Javi

HashMap i LinkedHashMap su klase, vrlo slične jedna drugoj i koriste se za stvaranje karte. HashMap klasa proširuje AbstractMap klasu tako da koristi heš tablicu za spremanje elemenata na karti. Klasa LinkedHashMap održava unose na karti na temelju njihovog redoslijeda umetanja. Značajka koja razlikuje HashMap i LinkedHashMap jedni od drugih je da Hashmap ne održava redoslijed pohranjenih unosa na karti. S druge strane, LinkedHashMap koristi hibridnu podatkovnu strukturu za održavanje redoslijeda unosa u koje su umetnuti. U tablici za usporedbu ispod sam istražio neke druge razlike između HashMap i LinkedHashMap.

Tablica usporedbe

Osnova za usporedbuHashMapLinkedHashMap
Osnovni, temeljniRedoslijed umetanja u HashMap nije sačuvan.Redoslijed umetanja sačuvan je u usluzi LinkedHashMap.
Struktura podatakaHashMap koristi HashTable za pohranu karata.LinkedHashMap koristi HashTable zajedno s povezanim popisom za pohranu karte.
Proširuje / implementiraHashMap proširuje AbstractMap i implementira sučelje karte.LinkedHashMap proširuje Hashmap.
VerzijaHashMap je uveden u JDK 2.0.LinkedHashMap je uveden u JDK 4.0.
goreKomparativno manje opterećenja.Komparativno više opterećenja jer mora održavati redoslijed unosa karte.

Definicija HashMap-a

HashMap je klasa koja se koristi za stvaranje karte. Implementira sučelje karte . Također proširuje AbstractMap klasu tako da može koristiti hash tablicu za pohranu unosa u mapu. Unosi karte je par gdje je svaki ključ povezan s vrijednošću. Ključ u unosu koristi se za dohvaćanje vrijednosti, stoga ključ mora biti jedinstven. Zato duplicirani ključevi nisu dopušteni u HashMap-u. Ali ključ u svakom unosu karte može imati drugačiji tip, tj. Ključevi na karti koje je stvorio HashMap mogu biti heterogeni. Struktura podataka koju HashMap koristi za pohranu karte je hash-tablica.

Redoslijed unosa unosa u HashMap nije sačuvan. Umetanje unosa u kartu stvorenu pomoću HashMap-a temelji se na heš kodu koji se izračunava pomoću ključeva u unosima. Ako ste pogreškom unijeli dvostruki ključ u HashMap, on će zamijeniti prethodnu vrijednost tog ključa novom predloženom vrijednosti i vratiti staru vrijednost. Ako se ne koristi dupli ključ i nema zamjene, ključ se uvijek vraća Null. Pogledajmo kako dodati zapise u hash mapu sa sljedećim primjerom.

 Hashmap hm = novi Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.println (hm); / * izlaz * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} 

Kao u gornjem kodu, možete vidjeti da sam stvorio objekt HashMap-a i dodao unose pomoću metode puts i kad sam ispisao HashMap objekt, unosi se ne ispisuju redoslijedom kojim su umetnuti. Dakle, ne možete se pretvarati da će se redoslijed unosa u HashMap vratiti. HashMap koristi sve metode sučelja Karte i AbstractMap klase i ne uvodi nove metode; ima svoje konstruktore. Zadani kapacitet hash mape je 16, a zadani stupanj popunjavanja je 0, 75 .

Definicija LinkedHashMap

LinkedHashMap je također klasa koja se koristi za izradu karte. LinkedHashMap proširuje HashMap klasu i kasnije je uveden u HashMap u JDK verziji 4.0. Biti dijete klase HashMap klase LinkedHashMap je potpuno isto kao i HashMap klasa uključujući konstruktore i metode. Ali, LinkedHashMap se razlikuje u smislu da održava redoslijed umetanja unosa u kartu. Struktura podataka koju LinkedHashMap koristi za spremanje karte je povezana lista i hash-tablica .

Osim metoda koje nasljeđuje HashMap, LinkedHashMap uvodi jednu novu metodu koja je removeEldestEntry () . Ova metoda se koristi za uklanjanje najstarijeg unosa na karti. Zadani kapacitet LinkedHashMap-a je 16, a zadani omjer punjenja je 0, 75, što je također slično HashMap klasi.

Ključne razlike između HashMap i LinkedHashMap u Javi

  1. Najvažnija razlika je da redoslijed umetanja HashMap-a nije sačuvan, dok je redoslijed umetanja LinkedHashMap očuvan .
  2. Struktura podataka koju HashMap koristi za spremanje elemenata karte je Hashtable . S druge strane, podatkovna struktura koju koristi LinkedHashMap je Linked list i Hashtable .
  3. HashMap klasa proširuje AbstractMap klasu i implementira sučelje karte . Međutim, LinkedHashMap klasa je podređena klasa HashMap klase, tj. LinkedHashMap klasa proširuje HashMap klasu.
  4. HashMap klasa uvedena je u verziji JDK 2.0 . Klasa LinkedHashMap uvedena je kasnije u verziji JDK 4.0 .
  5. Komparativno LinkedHashMap klasa ima više opterećenja nego HashMap jer mora održavati redoslijed elemenata umetnutih u kartu.

Zaključak:

LinkedHashMap se smije koristiti samo ako smo zabrinuti za slijed elemenata umetnutih u kartu.

Top