HashMap ja LinkedHashMap ovat kaksi yleisintä ja yleiskäyttöistä Map-toteutusta Java-alustalla. Ne ovat pohjimmiltaan hash-pohjaisia luokkia, melko samanlaisia toisiinsa ja niitä käytetään kartan luomiseen. Karttarajapinta on viimeinen merkittävistä kokoelmakehyksen rajapinnoista, joka määrittelee toiminnot, joita tuetaan avain-arvo-assosiaatioiden joukolla, jossa avaimet ovat ainutlaatuisia. Nämä Kartta-toteutukset perustuvat hajautusalgoritmiin. Vaikka luokka HashMap toteuttaa järjestämättömiä karttoja, luokka LinkedHashMap toteuttaa tilattuja karttoja. LinkedHashMap-toteutus on HashMap-luokan alaluokka, mikä tarkoittaa, että se perii luokan HashMap ominaisuudet. Suorituskyvyn suhteen näiden kahden välillä ei ole paljon eroa. Katsotaanpa.
HashMap on yksi yleisimmistä ja neljästä Java-karttarajapinnan yleiskäyttöisestä toteutuksesta, jotka perustuvat hajautusalgoritmiin. Se on analoginen asetetun luokan HashSetin kanssa, vaikka elementit ovat järjestyksessä molemmissa luokissa. Se toteutetaan hash-taulukkona, mutta toisin kuin LinkedHashMap, se ei ylläpitä mitään avainten tai arvojen järjestystä. Yleensä HashMap tarjoaa jatkuvan suorituskyvyn put and get -sovelluksille. Luokka ei ole langaton, mutta se sallii yhden nolla-avaimen ja useita nolla-arvoja. Koska se ei yllä iteratiivista järjestystä, se vaatii vähemmän muistia.
LinkedHashMap on yksi neljästä yleiskäyttöisestä Map-käyttöliittymästä, joka on HashMap-luokan alaluokka, eli se perii ominaisuudet. Vaikka se on suorituskyvyn suhteen hyvin samankaltainen kuin HashMap, paitsi että se ylläpitää avainten lisäysjärjestystä joko siinä järjestyksessä, jossa avaimet asetetaan karttaan, tai järjestyksessä, jolla merkintöjä käytetään kartassa. Se tarkentaa vanhemman luokan sopimusta takaamalla järjestyksen, jossa iteraattorit palauttavat elementit. Se vaatii kuitenkin enemmän muistia kuin HashMap, koska se ylläpitää kaksinkertaisesti linkitettyä luetteloa Java-sovelluksessa.
HashMap on hash-pohjainen Map-käyttöliittymän toteutus Java-sovelluksessa. Kartat ovat avain-arvoparien kokoelma ja niitä käytetään, kun luettelot ovat tilatussa kokoelmassa. HashMap on Collection-luokka, joka tallentaa arvon avain-arvopareihin. Yksinkertaisesti sanottuna, se kartoittaa avaimet arvoihin, mikä tarkoittaa, että se pystyy paikantamaan arvon avaimen perusteella. LinkedHashMap on linkitetty luettelototeutus Map-käyttöliittymästä aivan kuten HashMap, paitsi että se ylläpitää siihen lisättyjen elementtien tilauksia. Se on HashMap-alaluokka, joka perii ominaisuudet. LinkedHashMap tarkentaa emoyhtiönsä HashMapin sopimusta takaamalla järjestyksen, jossa iteraattorit palauttavat elementit.
Keskeinen ero HashMapin ja LinkedHashMapin välillä on järjestys. HashMap-elementit eivät ole kunnossa, täysin satunnaisia, kun taas LinkedHashMap-elementit tilataan. LinkedHashMap-merkinnät ovat avainten asettamisjärjestyksessä, mikä on järjestys, jossa avaimet lisätään karttaan. Tämä tarkoittaa, että ensimmäinen karttaan lisätty avain luetellaan ensin, samoin siihen liittyvä arvo ja viimeinen merkitty viimeksi lueteltu merkintä. LinkedHashMapilla on ennustettava iterointijärjestys, joka tarkoittaa, että se voi myös pitää elementtejä pääsyjärjestyksessä, mikä on merkintöjen käyttöjärjestys..
Sekä HashMap- että LinkedHashMap-luokat käyttävät hajautusta Map-käyttöliittymän toteuttamiseen Javassa, paitsi HashMap toteutetaan hash-taulukkona, kun taas LinkedHashMap ylläpitää kaksinkertaisesti linkitettyä luetteloa kauhoista, jotka käyvät läpi kaikki sen merkinnät. Siksi LinkedHashMap vaatii enemmän muistia kuin HashMap, koska toisin kuin HashMap, se ylläpitää tilausta. Se poistaa HashMapin kaoottisen tilauksen aiheuttamatta ylimääräisiä kustannuksia, jotka muuten olisi aiheutunut TreeMapista. Lisäksi LinkedHashMap-luokka on hyvin samankaltainen HashMap-luokan kanssa monessa suhteessa, kuten synkronointi ja tyhjät avaimet / arvot, koska molemmat sallivat yhden nolla-avaimen ja useita nollia-arvoja.
Vaikka molemmat luokat tarjoavat vertailukelpoisen suorituskyvyn, HashMap-luokan uskotaan olevan ensisijainen valinta, jos tilaaminen ei ole ongelma, koska se ei takaa kartan iteratiivista järjestystä. Toiminnot, kuten näppäinten lisääminen, poistaminen tai etsiminen avaimen perusteella, ovat vakioaika, koska ne hajauttavat avaimen. Joten merkintöjen lisääminen, poistaminen ja löytäminen LinkedHashMapissa voi olla hiukan hitaampaa kuin HashMapissa, koska se ylläpitää kaksinkertaisesti linkitetyn luettelon Java-kopioita. Lisäksi HashMap vaatii vähemmän muistia kuin LinkedHashMap, koska mitään järjestystä ei ylläpidetä.
Vaikka sekä HashMap- että HashMap-luokat ovat melkein samankaltaisia, HashMap vaatii vähemmän muistia kuin LinkedHashMap, koska se ei takaa kartan iteratiivista järjestystä, mikä tekee HashMap-tietokantojen lisäämisestä, poistamisesta ja löytämisestä suhteellisen nopeampaa kuin saman tekeminen linkitetyn kartan. Avainten ero näiden kahden välillä on kuitenkin järjestyksessä: HashMap-elementit eivät ole kunnossa, kun taas LinkedHashMap-elementit ovat avainten asettamisjärjestyksessä oletuksena, mikä tarkoittaa järjestystä, jossa avaimet asetetaan karttaan. LinkedHashMap voi myös pitää elementit pääsyjärjestyksessä, mikä tarkoittaa merkintöjen käyttöjärjestystä. Kuten LinkedHashMap, kaksinkertaisesti linkitetty luettelo on ylläpidettävä, sillä on vähemmän suorituskykyä kuin HashMap.