Soovitatav, 2019

Toimetaja Valik

HashMapi ja LinkedHashMapi vaheline erinevus Java-is

HashMap ja LinkedHashMap on üksteisega üsna sarnased klassid, mida kasutatakse kaardi loomiseks. HashMap-klass laiendab AbstractMap-klassi, et kasutada elemente kaardil kaardistamiseks hash-tabelit. LinkedHashMap klass säilitab kaardil olevad kirjed nende sisestamise järjekorras. HashMapi ja LinkedHashMapi üksteisest eristav funktsioon on see, et Hashmap ei hoia salvestatud kirjete järjekorda kaardil. Teisest küljest kasutab LinkedHashMap hübriidandmete struktuuri, et säilitada nende sisestamise järjekord. Allpool toodud võrdluskaardis uurisin mõningaid muid erinevusi HashMapi ja LinkedHashMapi vahel.

Võrdluskaart

Võrdluse alusHashMapLinkedHashMap
PõhilineHashMap-i sisestamise järjekorda ei säilitata.Lisamise järjekord säilitatakse LinkedHashMapis.
Andmete struktuurHashMap kasutab kaartide salvestamiseks HashTable'i.LinkedHashMap kasutab kaardi salvestamiseks HashTable'i koos lingitud loendiga.
Laiendused / rakendusedHashMap laiendab AbstractMapi ja rakendab Mapli liidest.LinkedHashMap laiendab Hashmapi.
VersioonHashMap tutvustati JDK 2.0-s.LinkedHashMap tutvustati JDK 4.0-s.
ÜldkuludVõ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

  1. Kõige olulisem erinevus on see, et HashMapi sisestamise järjekorda ei säilitata, samas kui LinkedHashMapi sisestamise järjekord on säilinud .
  2. Andmestruktuur, mida HashMap kasutab kaardi elementide salvestamiseks, on Hashtable . Teisest küljest on LinkedHashMapi kasutatav andmestruktuur lingitud ja Hashtable .
  3. HashMap klass laiendab AbstractMap klassi ja rakendab kaardi liidese. Siiski on LinkedHashMap klass HashMap klassi lapseklass, st LinkedHashMap klass laiendab HashMap klassi.
  4. HashMap klass võeti kasutusele JDK 2.0 versioonis. LinkedHashMap klass võeti kasutusele hiljem JDK 4.0 versioonis.
  5. 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.

Top