Razlika između HashMap-a i LinkedHashMap-a na Javi

Autor: Laura McKinney
Datum Stvaranja: 2 Travanj 2021
Datum Ažuriranja: 10 Svibanj 2024
Anonim
Razlika između HashMap-a i LinkedHashMap-a na Javi - Tehnologija
Razlika između HashMap-a i LinkedHashMap-a na Javi - Tehnologija

Sadržaj


HashMap i LinkedHashMap su klase, vrlo slične jedna drugoj i koriste se za stvaranje karte. HashMap klasa proširuje klasu AbstractMap kako bi se koristila tablica hash za pohranu elemenata u mapi. Klasa LinkedHashMap održava unose na karti na temelju njihova redoslijeda umetanja. Značajka koja razlikuje HashMap i LinkedHashMap jedan od drugog je to Hashmap ne održava redoslijed pohranjenih unosa na karti. S druge strane, LinkedHashMap koristi hibridnu strukturu podataka za održavanje redoslijeda unosa u koji su umetnuti. U Usporednoj tablici ispod istražio sam neke druge razlike između HashMap-a i LinkedHashMap-a samo pogledajte.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedbuHashMapLinkedHashMap
Osnovni, temeljniRedoslijed umetanja u HashMapu nije sačuvan.Redoslijed umetanja sačuvan je u LinkedHashMap-u.
Struktura podatakaHashMap koristi HashTable za pohranu karata.LinkedHashMap koristi HashTable zajedno sa povezanim popisom za pohranu mape.
Proširuje / implementiraHashMap proširuje AbstractMap i implementira sučelje karte.LinkedHashMap proširuje Hashmap.
VerzijaHashMap je predstavljen u JDK 2.0.LinkedHashMap predstavljen je u JDK 4.0.
goreUsporedba manje režijski.Usporedno više, jer mora održavati redoslijed unosa na kartu.


Definicija HashMap-a

HashMap je klasa koja se koristi za stvaranje karte. Provodi Karta Sučelje. Također se proširuje AbstractMap klase tako da može koristiti tablicu hash za spremanje unosa u kartu. Unosi na karti su a par gdje je svaki ključ povezan s vrijednošću. Ključ unosa koristi se za dohvaćanje vrijednosti, stoga ključ mora biti jedinstven. Zato dvostruki ključevi nisu dopušteni u HashMap-u. Ali ključ svakog unosa karte može imati različitu vrstu, tj. Ključevi na karti koju je stvorio HashMap mogu biti heterogeni. Struktura podataka koju HashMap koristi za pohranu karte je tablica hash-a.

Redoslijed umetanja unosa u HashMap nije sačuvan. Umetanje unosa u kartu izrađenu pomoću HashMap-a temelji se na hash kodu izračunatoj ključevima unosa. Ako ste greškom unijeli duplikat ključa u HashMap, on će zamijeniti prethodnu vrijednost tog ključa s novom predloženom vrijednošću i vratit će staru vrijednost. Ako se ne koristi dvostruki ključ i nije izvršena zamjena, ključ uvijek vraća Null. Pogledajmo kako dodati unose na hash kartu 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.ln (hm); / * izlaz * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}

Kao i u gornjem kôdu, možete vidjeti da sam stvorio objekt HashMap-a i dodao unose pomoću metode stavljanja, a kad sam uredio HashMap objekt, unosi se ne uređuju redom u koji su umetnuti. Dakle, ne možete se pretvarati da će se redoslijed unosa u HashMapu vratiti. HashMap koristi sve metode Map sučelja i klase AbstractMap i ne uvodi nijednu novu metodu; ima svoje konstruktore. Zadani kapacitet hash karte je 16 a zadani omjer ispunjavanja je 0.75.

Definicija LinkedHashMap-a

LinkedHashMap je također klasna uporaba za stvaranje karte. LinkedHashMap proširuje HashMap klase, a kasnije je predstavljen HashMap-u u JDK verziji 4.0. Biti podređena klasa HashMap klase LinkedHashMap potpuno je jednaka klasi HashMap, uključujući konstruktore i metode. No, LinkedHashMap razlikuje se u smislu da održava redoslijed umetanja unosa u kartu. Struktura podataka koju LinkedHashMap koristi za pohranu karte je povezan popis i hash table.

Pored metoda koje je naslijedio 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 0,75, što je također slično HashMap klasi.

  1. Najvažnija razlika je u tome što je redoslijed umetanja HashMap-a nije sačuvan budući da je redoslijed umetanja LinkedHashMap-a očuvan.
  2. Struktura podataka koju HashMap koristi za pohranu elemenata karte je Hashtable, S druge strane, struktura podataka koju koristi LinkedHashMap jest Povezani popis i Hashtable.
  3. HashMap klasa se proširuje AbstractMap klase i provodi Karta sučelje. Međutim, klasa LinkedHashMap je dječja klasa HashMap klasa tj. LinkedHashMap klasa proširuje klasu HashMap.
  4. HashMap klasa je uvedena u JDK 2.0 verzija. Klasa LinkedHashMap uvedena je kasnije u JDK 4.0 verzija.
  5. Usporedno LinkedHashMap klasa ima više režijskih troškova nego HashMap jer mora održavati redoslijed elemenata unesenih u kartu.

Zaključak:

LinkedHashMap moramo koristiti samo ako nas brine slijed elemenata umetnutih u kartu.