Verschil tussen HashMap en LinkedHashMap in Java

Schrijver: Laura McKinney
Datum Van Creatie: 2 April 2021
Updatedatum: 10 Kunnen 2024
Anonim
HashMap, LinkedHashMap and TreeMap in Java
Video: HashMap, LinkedHashMap and TreeMap in Java

Inhoud


HashMap en LinkedHashMap zijn de klassen die veel op elkaar lijken en worden gebruikt voor het maken van een kaart. De klasse HashMap breidt de klasse AbstractMap uit om een ​​hashtabel te gebruiken om de elementen op de kaart op te slaan. De klasse LinkedHashMap handhaaft de vermeldingen in de kaart op basis van hun invoegvolgorde. De functie die HashMap en LinkedHashMap van elkaar onderscheidt, is dat Hash kaart handhaaft de volgorde van de opgeslagen items op een kaart niet. Aan de andere kant, LinkedHashMap gebruikt een hybride datastructuur om de volgorde van invoer te handhaven waarin ze zijn ingevoegd. In de onderstaande vergelijkingstabel heb ik enkele andere verschillen tussen HashMap en LinkedHashMap onderzocht.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingHash kaartLinkedHashMap
basis-Invoegvolgorde in HashMap blijft niet behouden.Invoegvolgorde wordt bewaard in LinkedHashMap.
Data structuurHashMap gebruikt HashTable om kaarten op te slaan.LinkedHashMap gebruikt HashTable samen met Linked List om de kaart op te slaan.
Breidt / WerktuigenHashMap breidt AbstractMap uit en implementeert de 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 kaartvermeldingen moet handhaven.


Definitie van HashMap

HashMap is een klasse die wordt gebruikt om een ​​kaart te maken. Het implementeert Kaart Koppel. Het verlengt ook de AbstractMap zodat deze een hashtabel kan gebruiken om de vermeldingen op de kaart op te slaan. Vermeldingen op de kaart zijn a paar waarbij elke sleutel is gekoppeld aan de waarde. De sleutel in het item wordt gebruikt om de waarde op te halen, daarom moet de sleutel uniek zijn. Daarom zijn dubbele sleutels niet toegestaan ​​in de HashMap. Maar de sleutel in elk item van de kaart kan een ander type hebben, d.w.z. dat de sleutels in de kaart gemaakt door HashMap heterogeen kunnen zijn. De gegevensstructuur die door de HashMap wordt gebruikt om een ​​kaart op te slaan, is een hashtabel.

De invoegvolgorde van de items in de HashMap blijft niet behouden. Het invoegen van vermeldingen in de kaart die met HashMap is gemaakt, is gebaseerd op de hash-code die wordt berekend door de sleutels in vermeldingen. Als u per ongeluk een dubbele sleutel in de HashMap hebt ingevoerd, vervangt deze de vorige waarde van die sleutel door de voorgestelde nieuwe waarde en wordt de oude waarde geretourneerd. 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 items aan de hashkaart 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.ln (hm); / * uitvoer * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordanië = 200}

Net als in de bovenstaande code, zie je dat ik een object van HashMap heb gemaakt en de items heb toegevoegd met de methode put en wanneer ik het HashMap-object heb bewerkt, worden de items niet bewerkt 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 Map-interface en AbstractMap-klasse en introduceert geen nieuwe methode; het heeft zijn eigen constructeurs. De standaardcapaciteit van de hashkaart is 16 en standaard vullingsverhouding is 0.75.

Definitie van LinkedHashMap

LinkedHashMap is ook een klassengebruik om een ​​kaart te maken. LinkedHashMap verlengt de Hash kaart klasse en werd later geïntroduceerd in HashMap in JDK-versie 4.0. De kindklasse van de HashMap-klasse is LinkedHashMap is precies hetzelfde als de HashMap-klasse inclusief de constructors en methoden. Maar LinkedHashMap verschilt in zekere zin dat het de volgorde van het invoegen van de items in de kaart handhaaft. De gegevensstructuur die door LinkedHashMap wordt gebruikt om de kaart op te slaan is gekoppelde lijst en hash tafel.

Naast de methoden die HashMap heeft geërfd, introduceert LinkedHashMap één nieuwe methode removeEldestEntry (). Deze methode wordt gebruikt om het oudste item op de kaart te verwijderen. De standaardcapaciteit van de LinkedHashMap is 16 en de standaardvulverhouding is 0,75, wat ook vergelijkbaar is met de HashMap-klasse.

  1. Het belangrijkste verschil is dat de invoegvolgorde van de HashMap is niet bewaard terwijl de invoegvolgorde van de LinkedHashMap is bewaard.
  2. De gegevensstructuur die HashMap gebruikt om de elementen van de kaart op te slaan is Hashtable. Aan de andere kant is de datastructuur die wordt gebruikt door de LinkedHashMap Gekoppelde lijst en Hashtable.
  3. HashMap-klasse wordt uitgebreid AbstractMap klasse en implementeert de Kaart koppel. De klasse LinkedHashMap is echter een kindklasse van Hash kaart klasse, d.w.z. LinkedHashMap-klasse, breidt HashMap-klasse uit.
  4. HashMap-klasse werd geïntroduceerd in de JDK 2.0 versie. De klasse LinkedHashMap werd later geïntroduceerd JDK 4.0 versie.
  5. In vergelijking heeft de klasse LinkedHashMap meer overhead dan HashMap omdat het de volgorde van de elementen in de kaart moet handhaven.

Gevolgtrekking:

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