Salīdzinājuma diagramma
Salīdzinājuma pamats | HashMap | LinkedHashMap |
---|---|---|
Pamata | Ievietošanas secība HashMap nav saglabāta. | Ievietošanas secība ir saglabāta LinkedHashMap. |
Datu struktūra | HashMap izmanto HashTable, lai saglabātu kartes. | LinkedHashMap izmanto HashTable kopā ar Saistīto sarakstu, lai saglabātu karti. |
Paplašina / ievieš | HashMap paplašina AbstractMap un īsteno Map interfeisu. | LinkedHashMap paplašina Hashmap. |
Versija | HashMap tika ieviests JDK 2.0. | LinkedHashMap tika ieviests JDK 4.0. |
Pieskaitāmās izmaksas | Salīdzinoši mazāk pieskaitāmo. | Salīdzinoši vairāk pieskaitāmo, jo tai jāsaglabā kartes ierakstu secība. |
HashMap definīcija
HashMap ir klase, ko izmanto, lai izveidotu karti. Tā īsteno Map Interface. Tā arī paplašina AbstractMap klasi, lai tā varētu izmantot hash tabulu, lai saglabātu ierakstus kartē. Kartes ieraksti ir pāris, kur katra atslēga ir saistīta ar vērtību. Ieraksta atslēga tiek izmantota vērtības iegūšanai, tāpēc atslēgai jābūt unikālai. Tāpēc HashMap nav atļauts dublēt atslēgas. Taču katra kartes ieraksta atslēgai var būt atšķirīgs veids, proti, HashMap izveidotās kartes atslēgas var būt neviendabīgas. Datu struktūra, ko HashMap izmanto, lai saglabātu karti, ir hash tabula.
HashMap ierakstu ievietošanas secība netiek saglabāta. Ierakstu ievietošana kartē, kas izveidota, izmantojot HashMap, ir balstīta uz maiņas kodu, ko aprēķina ar ierakstiem ievadītajiem taustiņiem. Ja kļūdas dēļ ievadījāt dublējošo atslēgu HashMap, tas aizvietos iepriekšējās atslēgas vērtību ar jauno piedāvāto vērtību un atgriezīs veco vērtību. Ja netiek izmantots dublējošais taustiņš un nav notikusi nekāda nomaiņa, atslēga vienmēr atgriež Null. Ļaujiet mums redzēt, kā pievienot ierakstus hash kartē ar šādu piemēru.
Hashmap hm = jauns Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordānija", 200); System.out.println (hm); / * izeja * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordānija = 200}
Kā iepriekš minētajā kodā, jūs varat redzēt, ka es izveidoju HashMap objektu un pievienoju ierakstus, izmantojot ieliktņu metodi, un kad es izdrukāju HashMap objektu, ieraksti netiek drukāti tādā secībā, kādā tie tika ievietoti. Tādējādi jūs nevarat izlikties, ka HashMap ierakstu secība atgriezīsies. HashMap izmanto visas Map interfeisa un AbstractMap klases metodes un neievieš jaunas metodes; tai ir savi konstruktori. Noklusējuma kartes jauda ir 16 un noklusējuma aizpildīšanas koeficients ir 0, 75 .
LinkedHashMap definīcija
LinkedHashMap ir arī klases izmantošana, lai izveidotu karti. LinkedHashMap paplašina HashMap klasi un vēlāk to ieviesa HashMap versijā 4.0. Būt HashMap klases bērna klasei LinkedHashMap ir tieši tāds pats kā HashMap klase, ieskaitot konstruktorus un metodes. Bet, LinkedHashMap atšķiras tādā ziņā, ka saglabā kārtību, kādā kartes tiek ievietotas. Datu struktūra, ko LinkedHashMap izmanto, lai saglabātu karti, ir saistītais saraksts un hash tabula .
Papildus HashMap mantotajām metodēm, LinkedHashMap ievieš jaunu metodi, kas ir noņemtaEldestEntry () . Šo metodi izmanto, lai noņemtu vecāko ierakstu kartē. LinkedHashMap noklusējuma ietilpība ir 16, un noklusējuma aizpildīšanas attiecība ir 0, 75, kas ir līdzīga arī HashMap klasei.
Galvenās atšķirības starp HashMap un LinkedHashMap Java
- Vissvarīgākā atšķirība ir tā, ka HashMap ievietošanas secība netiek saglabāta, bet LinkedHashMap ievietošanas secība ir saglabāta .
- Datu struktūra, ko HashMap izmanto, lai saglabātu kartes elementus, ir Hashtable . No otras puses, datu struktūra, ko izmanto LinkedHashMap, ir Saistīts saraksts un Hashtable .
- HashMap klase paplašina AbstractMap klasi un īsteno Map interfeisu. Tomēr LinkedHashMap klase ir HashMap klases bērnu klase, ti, LinkedHashMap klase paplašina HashMap klasi.
- HashMap klase tika ieviesta JDK 2.0 versijā. LinkedHashMap klase tika ieviesta vēlāk JDK 4.0 versijā.
- Salīdzinoši LinkedHashMap klasē ir vairāk pieskaitāmās izmaksas nekā HashMap, jo tai ir jāsaglabā kartē ievietoto elementu secība.
Secinājums:
LinkedHashMap ir jāizmanto tikai tad, ja esam noraizējušies par kartē ievietoto elementu secību.