HashMap och LinkedHashMap är två av de vanligaste och övergripande kart implementeringarna i Java-plattformen. De är i grunden hashbaserade klasser, som är ganska lika varandra och används för att skapa en karta. Kartgränssnittet är det sista av de viktigaste samlingsgränssnittens gränssnitt som definierar de operationer som stöds av en uppsättning nyckel-till-värde-föreningar där tangenterna är unika. Dessa kart implementeringar baseras på en hashingalgoritm. Medan klassen HashMap implementerar oordnade kartor implementerar klassen LinkedHashMap ordnade kartor. Implementeringen LinkedHashMap är en underklass i HashMap-klassen vilket innebär att den ärverver funktionerna i klass HashMap. Det finns inte mycket skillnad mellan de två i form av prestanda. Låt oss ta en titt.
HashMap är en av de vanligaste och bland de fyra övergripande implementeringarna av Map-gränssnittet i Java baserat på en hashingalgoritm. Det är analogt med den uppsatta klassen HashSet, även om elementen är orörd i båda klasserna. Det implementeras som ett hashbord, men i motsats till LinkedHashMap, behåller det ingen order på nycklar eller värden. I allmänhet erbjuder HashMap konstant tidsproduktion för put and get. Klassen är inte trådsäker men det tillåter en nollnyckel och flera nullvärden. Eftersom det inte upprätthåller en iterationsordning kräver det mindre minne.
LinkedHashMap är bland de fyra övergripande implementeringarna av Map-gränssnittet, vilket är en underklass i HashMap-klassen vilket innebär att den ärverger sina funktioner. Även om det liknar HashMap när det gäller prestanda, bortsett från att det upprätthåller inplaceringsordningen för nycklar, antingen i ordning där tangenterna är infogade i kartan eller den ordning i vilken posterna är åtkomliga i kartan. Det förfinar kontraktet för sin föräldraklass genom att garantera den ordning i vilken iteratorer returnerar sina element. Det kräver emellertid mer minne än en HashMap eftersom den bibehåller en dubbelkopplad lista i Java.
HashMap är en hashbaserad implementering av Map-gränssnittet i Java. Kartor är en samling av nyckelvärdespar och används när listor finns i beställd samling. HashMap är en samlingsklass som lagrar värde i nyckelvärdespar. Enkelt uttryckt kartlägger det nycklar till värden som betyder att det kan hitta ett värde baserat på en nyckel. LinkedHashMap är en länkad listimplementering av Map-gränssnittet, precis som HashMap, förutom att det behåller order av element som är inlagda i det. Det är en underklass av HashMap som ärver dess funktioner. LinkedHashMap förfinar kontraktet för sin föräldraklass, HashMap, genom att garantera den ordning i vilken iteratorer returnerar sina element.
Huvudskillnaden mellan HashMap och LinkedHashMap är order. Element av en HashMap är inte i ordning, helt slumpmässigt, medan element i LinkedHashMap beställs. Införandet av en LinkedHashMap är i nyckelinställningsorder, vilket är den ordning i vilken nycklarna är infogade i kartan. Det betyder att den första nyckeln som sätts in i kartan är uppräknad först, så görs det värde som är associerat med det, och den sista posten infördes senast uppräknad. LinkedHashMap har en förutsägbar iterationsorder som innebär att den även kan behålla sina element i åtkomstorder, vilket är den ordning i vilken posterna är åtkomliga.
Både HashMap och LinkedHashMap-klasserna använder hashing för att implementera Map-gränssnittet i Java förutom att HashMap implementeras som en hash-tabell medan LinkedHashMap upprätthåller en dubbelförbunden lista över skopor som går igenom alla dess poster. Det är därför LinkedHashMap kräver mer minne än HashMap eftersom det, till skillnad från HashMap, upprätthåller en order. Det tar bort den kaotiska beställningen av HashMap, utan att medföra extra kostnader som annars skulle ha uppkommit med TreeMap. Dessutom är LinkedHashMap-klassen mycket lik HashMap-klassen i många aspekter, såsom synkronisering och nollnycklar / värden, eftersom båda tillåter en nollnyckel och flera nullvärden.
Trots att båda klasserna ger jämförbar prestanda, anses HashMap-klassen vara det föredragna valet om beställning inte är ett problem eftersom det inte garanterar den itererande ordningen på kartan. Operationer som att lägga till, ta bort eller hitta poster baserat på en nyckel är konstant, eftersom de har nyckeln. Så att lägga till, ta bort och hitta poster i en LinkedHashMap kan vara lite långsammare än i en HashMap eftersom den upprätthåller en dubbelkopplad lista med Skopor i Java. Dessutom kräver HashMap mindre minne än LinkedHashMap eftersom ingen order upprätthålls.
Medan både HashMap och HashMap-klasserna är nästan lika i prestanda, kräver HashMap mindre minne än en LinkedHashMap eftersom det inte garanterar den iterating-ordningen på kartan, vilket gör att lägga till, ta bort och hitta poster i en HashMap relativt snabbare än att göra detsamma med en LinkedHashMap. Huvudskillnaden mellan de två är emellertid order: elementen i en HashMap är inte i ordning, medan elementen i en LinkedHashMap är i nyckelinställningsorder som standard betyder den ordning i vilken nycklarna är infogade i kartan. LinkedHashMap kan också behålla sina element i åtkomstorder vilket betyder den ordning i vilken posterna är åtkomliga. Liksom hos LinkedHashMap måste en dubbelkopplad lista bibehållas, den har mindre prestanda än HashMap.