Razlika između HashMap-a i LinkedHashMap-a na Javi
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.
- Usporedni grafikon
- definicija
- Ključne razlike
- Zaključak
Usporedni grafikon
Osnove za usporedbu | HashMap | LinkedHashMap |
---|---|---|
Osnovni, temeljni | Redoslijed umetanja u HashMapu nije sačuvan. | Redoslijed umetanja sačuvan je u LinkedHashMap-u. |
Struktura podataka | HashMap koristi HashTable za pohranu karata. | LinkedHashMap koristi HashTable zajedno sa povezanim popisom za pohranu mape. |
Proširuje / implementira | HashMap proširuje AbstractMap i implementira sučelje karte. | LinkedHashMap proširuje Hashmap. |
Verzija | HashMap je predstavljen u JDK 2.0. | LinkedHashMap predstavljen je u JDK 4.0. |
gore | Usporedba 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 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. 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.
Definicija LinkedHashMap-a
- 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.
- Struktura podataka koju HashMap koristi za pohranu elemenata karte je Hashtable, S druge strane, struktura podataka koju koristi LinkedHashMap jest Povezani popis i Hashtable.
- 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.
- HashMap klasa je uvedena u JDK 2.0 verzija. Klasa LinkedHashMap uvedena je kasnije u JDK 4.0 verzija.
- 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.