Erinevus HashMapi ja LinkedHashMapi vahel Java-s
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.
- Võrdlusdiagramm
- Definitsioon
- Peamised erinevused
- Järeldus
Võrdlusdiagramm
Võrdluse alus | HashMap | LinkedHashMap |
---|---|---|
Põhiline | Sisestusjärjekorda HashMapis ei säilitata. | Sisestusjärjestus säilitatakse LinkedHashMapis. |
Andmete struktuur | HashMap kasutab kaartide salvestamiseks rakendust HashTable. | LinkedHashMap kasutab kaardi talletamiseks HashTable'i koos lingitud nimekirjaga. |
Laiendab / rakendab | HashMap laiendab AbstractMap ja rakendab kaardiliidese. | LinkedHashMap laiendab Hashmap'i. |
Versioon | HashMap tutvustati JDK 2.0-s. | LinkedHashMap tutvustati JDK 4.0-s. |
Üle pea | Võ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 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 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.
LinkedHashMap määratlus
- Kõige olulisem erinevus on see, et HashMap sisestamise järjekord on säilitamata arvestades, et LinkedHashMap sisestamise järjekord on konserveeritud.
- Andmestruktuur, mida HashMap kasutab kaardi elementide salvestamiseks, on Rõõmustav. Teisest küljest on LinkedHashMap kasutatav andmestruktuur Lingitud nimekiri ja Rõõmustav.
- HashMap klass laieneb AbstractMap klassi ja rakendab Kaart liides. LinkedHashMap klass on aga laste klass HashMap klass, st LinkedHashMap klass laiendab HashMap klassi.
- HashMap klass tutvustati JDK 2.0 versioon. LinkedHashMap-klassi tutvustati hiljem JDK 4.0 versioon.
- 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.