Tablica usporedbe
Osnova za usporedbu | HashMap | LinkedHashMap |
---|---|---|
Osnovni, temeljni | Redoslijed umetanja u HashMap nije sačuvan. | Redoslijed umetanja sačuvan je u usluzi LinkedHashMap. |
Struktura podataka | HashMap koristi HashTable za pohranu karata. | LinkedHashMap koristi HashTable zajedno s povezanim popisom za pohranu karte. |
Proširuje / implementira | HashMap proširuje AbstractMap i implementira sučelje karte. | LinkedHashMap proširuje Hashmap. |
Verzija | HashMap je uveden u JDK 2.0. | LinkedHashMap je uveden u JDK 4.0. |
gore | Komparativno 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
- Najvažnija razlika je da redoslijed umetanja HashMap-a nije sačuvan, dok je redoslijed umetanja LinkedHashMap očuvan .
- Struktura podataka koju HashMap koristi za spremanje elemenata karte je Hashtable . S druge strane, podatkovna struktura koju koristi LinkedHashMap je Linked list i Hashtable .
- 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.
- HashMap klasa uvedena je u verziji JDK 2.0 . Klasa LinkedHashMap uvedena je kasnije u verziji JDK 4.0 .
- 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.