Aanbevolen, 2024

Editor'S Choice

Verschil tussen HashMap en LinkedHashMap op Java

HashMap en LinkedHashMap zijn de klassen die behoorlijk op elkaar lijken en die worden gebruikt voor het maken van een kaart. HashMap-klasse breidt de klasse AbstractMap uit om een ​​hashtabel te gebruiken om de elementen op de kaart op te slaan. De klasse LinkedHashMap onderhoudt de vermeldingen in de kaart op basis van hun invoegopdracht. De functie die HashMap en LinkedHashMap van elkaar onderscheidt, is dat Hashmap de volgorde van de opgeslagen vermeldingen op een kaart niet bijhoudt . Aan de andere kant gebruikt LinkedHashMap een hybride datastructuur om de volgorde te behouden waarin ze zijn ingevoegd. In de onderstaande Vergelijkingskaart heb ik een aantal andere verschillen tussen HashMap en LinkedHashMap onderzocht.

Vergelijkingstabel

Basis voor vergelijkingHash kaartLinkedHashMap
basis-Invoegvolgorde in HashMap is niet behouden.Invoegvolgorde wordt bewaard in LinkedHashMap.
Data structuurHashMap gebruikt HashTable om kaarten op te slaan.LinkedHashMap gebruikt HashTable samen met gekoppelde lijst om kaart op te slaan.
Breidt / WerktuigenHashMap breidt AbstractMap uit en implementeert kaartinterface.LinkedHashMap breidt Hashmap uit.
VersieHashMap werd geïntroduceerd in JDK 2.0.LinkedHashMap werd geïntroduceerd in JDK 4.0.
boven het hoofdRelatief minder overhead.Relatief meer overhead omdat het de volgorde van de kaartitems moet behouden.

Definitie van HashMap

HashMap is een klasse die wordt gebruikt om een ​​kaart te maken. Het implementeert Map Interface. Het breidt ook de klasse AbstractMap uit, zodat deze een hash-tabel kan gebruiken om de vermeldingen op de kaart op te slaan. Invoer van de kaart is een paar waarbij elke sleutel aan de waarde is gekoppeld. De sleutel in het item wordt gebruikt voor het ophalen van de waarde, daarom moet de sleutel uniek zijn. Dat is de reden waarom dubbele sleutels niet zijn toegestaan ​​in de HashMap. Maar de sleutel in elk item op de kaart kan een ander type hebben, dwz de sleutels in de kaart die door HashMap zijn gemaakt, kunnen heterogeen zijn. De gegevensstructuur die door de HashMap wordt gebruikt om een ​​kaart op te slaan, is een hashtabel.

De invoegvolgorde van de vermeldingen in de HashMap wordt niet bewaard. Het invoegen van gegevens op de kaart die met behulp van HashMap zijn gemaakt, is gebaseerd op de hash-code die wordt berekend door de toetsen in de vermeldingen. Als je per ongeluk een duplicaatsleutel hebt ingevoerd in de HashMap, vervangt deze de vorige waarde van die sleutel door de voorgestelde nieuwe waarde en retourneert de oude waarde. Als er geen dubbele sleutel wordt gebruikt en er geen vervanging heeft plaatsgevonden, retourneert de sleutel altijd Null. Laten we eens kijken hoe we de ingangen aan de hash-kaart kunnen toevoegen met het volgende voorbeeld.

 Hashmap hm = nieuwe Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.println (hm); / * uitvoer * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} 

Net als in de bovenstaande code kunt u zien dat ik een object van HashMap heb gemaakt en de items heb toegevoegd met behulp van de methode puts. Wanneer ik het HashMap-object heb afgedrukt, worden de vermeldingen niet afgedrukt in de volgorde waarin ze zijn ingevoegd. Daarom kunt u niet doen alsof de volgorde van de items in de HashMap zal terugkeren. HashMap gebruikt alle methoden van de Map-interface en de AbstractMap-klasse en introduceert geen nieuwe methode; het heeft zijn eigen constructeurs. De standaardcapaciteit van de hash-kaart is 16 en de standaard opvullingsratio is 0, 75 .

Definitie van LinkedHashMap

LinkedHashMap is ook een lesgebruik om een ​​kaart te maken. LinkedHashMap breidt de klasse HashMap uit en werd later geïntroduceerd in HashMap in JDK versie 4.0. De onderliggende klasse van HashMap-klasse LinkedHashMap is precies hetzelfde als de klasse HashMap, inclusief de constructeurs en methoden. Maar LinkedHashMap verschilt in die zin dat het de volgorde van invoegen van de items op de kaart bijhoudt. De gegevensstructuur die door LinkedHashMap wordt gebruikt om de kaart op te slaan, is een gekoppelde lijst en een hashtabel .

Naast de methoden overgenomen door HashMap, introduceert LinkedHashMap één nieuwe methode die removeEldestEntry () is . Deze methode wordt gebruikt om de oudste vermelding op de kaart te verwijderen. De standaardcapaciteit van de LinkedHashMap is 16 en de standaard opvullingsratio is 0, 75, die ook vergelijkbaar is met de klasse HashMap.

Belangrijkste verschillen tussen HashMap en LinkedHashMap in Java

  1. Het belangrijkste verschil is dat de invoegvolgorde van de HashMap niet wordt bewaard, terwijl de invoegvolgorde van de LinkedHashMap behouden blijft .
  2. De gegevensstructuur die HashMap gebruikt om de elementen van de kaart op te slaan, is Hashtable . Aan de andere kant is de gegevensstructuur die wordt gebruikt door de LinkedHashMap gekoppelde lijst en hashtabel .
  3. De HashMap-klasse breidt de AbstractMap- klasse uit en implementeert de kaartinterface. De klasse LinkedHashMap is echter een onderliggende klasse van de HashMap- klasse, dwz de klasse LinkedHashMap breidt de klasse HashMap uit.
  4. De HashMap-klasse is geïntroduceerd in de JDK 2.0- versie. De klasse LinkedHashMap is later geïntroduceerd in de JDK 4.0- versie.
  5. Relatief De klasse LinkedHashMap heeft meer overhead dan HashMap, omdat deze de volgorde moet handhaven van de elementen die op de kaart zijn ingevoegd.

Conclusie:

LinkedHashMap mag alleen worden gebruikt als we ons zorgen maken over de volgorde van de elementen die op de kaart zijn ingevoegd.

Top