Erinevus HashMapi ja LinkedHashMapi vahel Java-s

Autor: Laura McKinney
Loomise Kuupäev: 2 Aprill 2021
Värskenduse Kuupäev: 10 Mai 2024
Anonim
Erinevus HashMapi ja LinkedHashMapi vahel Java-s - Tehnoloogia
Erinevus HashMapi ja LinkedHashMapi vahel Java-s - Tehnoloogia

Sisu


HashMap ja LinkedHashMap on klassid, üsna sarnased ja neid kasutatakse kaardi koostamiseks. HashMap-klass laiendab AbstractMap-klassi, et kasutada elementide kaardile salvestamiseks räsitabelit. LinkedHashMap klass hooldab kaardil olevaid kirjeid nende sisestamise järjekorra alusel. Funktsioon, mis eristab HashMap ja LinkedHashMap üksteisest, on see Hashmap ei säilita kaardil salvestatud kirjete järjekorda. Teiselt poolt, LinkedHashMap kasutab hübriidset andmestruktuuri, et säilitada kirjete järjekord, kuhu need sisestati. Allpool olevas võrdlustabelis uurisin veel mõnda erinevust HashMapi ja LinkedHashMapi vahel.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusHashMapLinkedHashMap
PõhilineSisestusjärjekorda HashMapis ei säilitata.Sisestusjärjestus säilitatakse LinkedHashMapis.
Andmete struktuurHashMap kasutab kaartide salvestamiseks rakendust HashTable.LinkedHashMap kasutab kaardi talletamiseks HashTable'i koos lingitud nimekirjaga.
Laiendab / rakendabHashMap laiendab AbstractMap ja rakendab kaardiliidese.LinkedHashMap laiendab Hashmap'i.
VersioonHashMap tutvustati JDK 2.0-s.LinkedHashMap tutvustati JDK 4.0-s.
Üle peaVõrdlemisi vähem üldkulusid.Võrdlemisi rohkem üldkulusid, kuna see peab hoidma kaardikannete järjekorda.


Määratlus HashMap

HashMap on klass, mida kasutatakse kaardi koostamiseks. See rakendab Kaart Liides. See laiendab ka AbstractMap klassi, nii et see saaks räsitabeli abil kirjeid kaardile salvestada. Kaardi kanded on a paar, kus iga võti on väärtusega seotud. Kirje võtit kasutatakse väärtuse leidmiseks, seega peab see olema kordumatu. Seetõttu pole dubleerivaid võtmeid HashMapis lubatud. Kuid kaardi igas sisestuses olev võti võib olla erinevat tüüpi, st HashMapi loodud kaardi võtmed võivad olla heterogeensed. Andmestruktuur, mida HashMap kaardi salvestamiseks kasutab, on räsitabel.

Kirjete sisestamise järjekorda HashMapis ei säilitata. Kirjete sisestamine HashMapi abil loodud kaardile põhineb räsikoodil, mille arvutavad sissekannete klahvid. Kui sisestasite ekslikult võtme HashMap-is duplikaatvõtme, asendab see selle võtme varasema väärtuse uue pakutud väärtusega ja tagastab vana väärtuse. Kui duplikaatvõtit ei kasutata ja asendamist pole toimunud, tagastab võti alati väärtuse Null. Vaatame, kuidas lisada sisestused räsikaardile järgmise näite abil.


Hashmap hm = uus Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * väljund * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordaania = 200}

Nagu ülaltoodud koodi puhul, näete, et lõin HashMapi objekti ja lisasin kirjed put-meetodi abil. Kui HashMap-i objekti redigeerisin, ei redigeerita kirjeid sisestamise järjekorras. Seega ei saa te eeldada, et HashMap'is kannete järjekord naaseb. HashMap kasutab kõiki kaardiliidese ja AbstractMap-klassi meetodeid ega tutvusta ühtegi uut meetodit; sellel on oma konstruktorid. Räsikaardi vaikemaht on 16 ja vaikimisi täitmise suhe on 0.75.

LinkedHashMap määratlus

LinkedHashMap on klassi kasutamine ka kaardi loomiseks. LinkedHashMap laiendab HashMap klassi ja tutvustati hiljem HashMapi JDK versioonis 4.0. Olles HashMap-klassi LinkedHashMap lasteklass, on täpselt sama mis HashMap-klassiga, sealhulgas konstruktorite ja meetoditega. Kuid LinkedHashMap erineb selles mõttes, et see säilitab kirjete kaardile sisestamise järjekorra. Andmestruktuur, mida LinkedHashMap kaardi salvestamiseks kasutab, on lingitud nimekiri ja räsilaud.

Lisaks HashMapi päritud meetoditele tutvustab LinkedHashMap ühte uut meetodit, mis on removeEldestEntry (). Seda meetodit kasutatakse kaardi vanima kande eemaldamiseks. LinkedHashMapi vaikemaht on 16 ja vaiketäitesuhe on 0,75, mis on samuti sarnane HashMap-klassiga.

  1. Kõige olulisem erinevus on see, et HashMap sisestamise järjekord on säilitamata arvestades, et LinkedHashMap sisestamise järjekord on konserveeritud.
  2. Andmestruktuur, mida HashMap kasutab kaardi elementide salvestamiseks, on Rõõmustav. Teisest küljest on LinkedHashMap kasutatav andmestruktuur Lingitud nimekiri ja Rõõmustav.
  3. HashMap klass laieneb AbstractMap klassi ja rakendab Kaart liides. LinkedHashMap klass on aga laste klass HashMap klass, st LinkedHashMap klass laiendab HashMap klassi.
  4. HashMap klass tutvustati JDK 2.0 versioon. LinkedHashMap-klassi tutvustati hiljem JDK 4.0 versioon.
  5. Võrreldes LinkedHashMap klassiga on rohkem üldkulusid kui HashMap, kuna see peab säilitama kaardile sisestatud elementide järjekorra.

Järeldus:

LinkedHashMap'i tuleb kasutada ainult siis, kui oleme mures kaardile sisestatud elementide järjestuse pärast.