Võrdluskaart
Võrdluse alus | HashMap | LinkedHashMap |
---|---|---|
Põhiline | HashMap-i sisestamise järjekorda ei säilitata. | Lisamise järjekord säilitatakse LinkedHashMapis. |
Andmete struktuur | HashMap kasutab kaartide salvestamiseks HashTable'i. | LinkedHashMap kasutab kaardi salvestamiseks HashTable'i koos lingitud loendiga. |
Laiendused / rakendused | HashMap laiendab AbstractMapi ja rakendab Mapli liidest. | LinkedHashMap laiendab Hashmapi. |
Versioon | HashMap tutvustati JDK 2.0-s. | LinkedHashMap tutvustati JDK 4.0-s. |
Üldkulud | Võrreldes vähem üldkulusid. | Võrreldes rohkem üldkulusid, sest see peab säilitama kaardikirjete järjekorra. |
HashMapi määratlus
HashMap on klass, mida kasutatakse kaardi loomiseks. See rakendab Map Interface'i. See laiendab ka AbstractMapi klassi nii, et see võib kasutada räsikirjeid kirjete salvestamiseks kaardile. Kaardi kirjed on paar, kus iga võti on seotud väärtusega. Sisestuse võtit kasutatakse väärtuse allalaadimiseks, seega peab võti olema unikaalne. Seetõttu ei ole HashMapis dubleeritud võtmeid lubatud. Kuid kaardi iga kirje võti võib olla erinevat tüüpi, st HashMapi loodud kaardi võtmed võivad olla heterogeensed. Andmestruktuur, mida HashMap kasutab kaardi salvestamiseks, on räsifail.
HashMapi kirjete sisestamise järjekorda ei säilitata. HashMap-i abil loodud kaardi sisestamine põhineb postkoodide arvutusel arvutatud räsikoodil. Kui olete ekslikult sisestanud duplikaadi võtme HashMapisse, asendab see selle võtme eelmise väärtuse uue pakutud väärtusega ja tagastab vana väärtuse. Kui dubleerivat võtit ei kasutata ja asendust pole toimunud, tagastab võti alati Null'i. Vaatame, kuidas lisada näited räsikaardile järgmise näitega.
Hashmap hm = uus Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordaania", 200); System.out.println (hm); / * väljund * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordaania = 200}
Nagu ülaltoodud koodis, näete, et olen loonud HashMapi objekti ja lisanud kanded meetodiga kirjed ja kui ma HashMap-i objekti printisin, ei trükita neid sisestamise järjekorras. Seega ei saa te teeselda, et HashMapi kirjete järjekord naaseb. HashMap kasutab kõiki kaardiliidese ja AbstractMap klassi meetodeid ning ei kasuta ühtegi uut meetodit; tal on oma konstruktorid. Hõõrdekaardi vaikimisi maht on 16 ja vaikimisi täidetav suhe on 0, 75 .
LinkedHashMapi määratlus
LinkedHashMap on ka klassi kasutamine kaardi loomiseks. LinkedHashMap laiendab HashMapi klassi ja tutvustati hiljem HashMapile JDK versioonis 4.0. HashMap-klassi lapseklassiks on LinkedHashMap täpselt sama, mis HashMapi klass, sealhulgas konstruktorid ja meetodid. Kuid LinkedHashMap erineb selles mõttes, et see säilitab järjekorra sisestuste sisestamiseks kaardile. Andmestruktuur, mida LinkedHashMap kasutab kaardi salvestamiseks, on seotud nimekirja ja räsi tabel .
Lisaks HashMapi poolt päritud meetoditele tutvustab LinkedHashMap ühte uut meetodit, mis on eemaldatudEldestEntry () . Seda meetodit kasutatakse kaardi vanima kirje eemaldamiseks. LinkedHashMapi vaikevõimsus on 16 ja vaikimisi täidetav suhe on 0, 75, mis on sarnane ka HashMap-klassi.
Peamised erinevused HashMapi ja LinkedHashMapi vahel Java-is
- Kõige olulisem erinevus on see, et HashMapi sisestamise järjekorda ei säilitata, samas kui LinkedHashMapi sisestamise järjekord on säilinud .
- Andmestruktuur, mida HashMap kasutab kaardi elementide salvestamiseks, on Hashtable . Teisest küljest on LinkedHashMapi kasutatav andmestruktuur lingitud ja Hashtable .
- HashMap klass laiendab AbstractMap klassi ja rakendab kaardi liidese. Siiski on LinkedHashMap klass HashMap klassi lapseklass, st LinkedHashMap klass laiendab HashMap klassi.
- HashMap klass võeti kasutusele JDK 2.0 versioonis. LinkedHashMap klass võeti kasutusele hiljem JDK 4.0 versioonis.
- Võrdlevalt on LinkedHashMap klassi rohkem kui HashMap, kuna see peab säilitama kaardile sisestatud elementide järjekorra.
Järeldus:
LinkedHashMapit tuleb kasutada ainult siis, kui me muretseme kaardile sisestatud elementide järjestuse pärast.