Rekommenderas, 2024

Redaktionen

Skillnad mellan HashMap och LinkedHashMap i Java

HashMap och LinkedHashMap är klasserna, som är ganska lik varandra och används för att skapa en karta. HashMap-klassen utökar klassen AbstractMap för att använda ett hashbord för att lagra elementen i kartan. LinkedHashMap-klassen behåller posterna i kartan baserat på deras införingsorder. Funktionen som skiljer HashMap och LinkedHashMap från varandra är att Hashmap inte behåller ordningen för de lagrade posterna i en karta. Å andra sidan använder LinkedHashMap en hybriddatastruktur för att upprätthålla ordningen för poster där de infördes. I jämförelsetabellen nedan undersökte jag några andra skillnader mellan HashMap och LinkedHashMap bara ta en titt.

Jämförelsediagram

Grunder för jämförelseHashMapLinkedHashMap
GrundläggandeInplaceringsorder i HashMap är inte bevarad.Inplaceringsorder bevaras i LinkedHashMap.
DatastrukturHashMap använder HashTable för att lagra kartor.LinkedHashMap använder HashTable tillsammans med länklistan för att lagra kartan.
Sträcker / RedskapHashMap utökar AbstractMap och implementerar Map-gränssnitt.LinkedHashMap utökar Hashmap.
VersionHashMap introducerades i JDK 2.0.LinkedHashMap introducerades i JDK 4.0.
Över huvudetJämförelsevis mindre overhead.Jämförelsevis mer kostnadseffektivt eftersom det måste behålla ordningen för kartposter.

Definition av HashMap

HashMap är en klass som används för att skapa en karta. Det implementerar Map Interface. Den utökar även abstraktmappen så att den kan använda ett hashbord för att lagra inmatningarna i kartan. Anteckningar på kartan är ett par där varje nyckel är associerad med värdet. Nyckeln i posten används för att hämta värdet så att nyckeln måste vara unik. Därför är dubbla nycklar inte tillåtna i HashMap. Men nyckeln i varje post på kartan kan ha olika typer, dvs nycklarna i kartan som skapats av HashMap kan vara heterogena. Datastrukturen som används av HashMap för att lagra en karta är ett hashbord.

Införingsordern för posterna i HashMap är inte bevarad. Införandet av poster i kartan som skapats med HashMap baseras på hashkoden som beräknas av nycklarna i poster. Om du av misstag har skrivit in en duplikat nyckel i HashMap kommer den att ersätta det tidigare värdet på den nyckeln med det nya värdet som föreslås och returnerar det gamla värdet. Om ingen duplikatnyckel används och ingen ersättning har skett, returnerar nyckeln alltid Null. Låt oss se hur du lägger till poster till hash-kartan med följande exempel.

 Hashmap hm = ny Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.println (hm); / * utgång * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordanien = 200} 

Som i ovanstående kod kan du se att jag skapade ett objekt av HashMap och lade till posterna med hjälp av puts-metoden och när jag skrivit ut HashMap-objektet skrivs inte posterna i den ordning de infördes. Därför kan du inte låtsas att orderna i posterna i HashMap kommer att återvända. HashMap använder alla metoder för Map-gränssnitt och AbstractMap-klass och introducerar inte någon ny metod. den har sina egna konstruktörer. Standardkapaciteten för hashkartan är 16 och standardfyllningsförhållandet är 0.75 .

Definition av LinkedHashMap

LinkedHashMap är också en klassanvändning för att skapa en karta. LinkedHashMap utökar HashMap- klassen och introducerades senare till HashMap i JDK version 4.0. Att vara klassen Class of HashMap-klass LinkedHashMap är exakt samma som HashMap-klassen inklusive konstruktörer och metoder. Men, LinkedHashMap skiljer sig på så sätt att det behåller ordningen för införandet av posterna i kartan. Datastrukturen som används av LinkedHashMap för att lagra kartan är länkad lista och hash-tabell .

Förutom de metoder som ärverts av HashMap, introducerar LinkedHashMap en ny metod som är removeEldestEntry () . Den här metoden används för att ta bort den äldsta posten i kartan. Standardkapaciteten för LinkedHashMap är 16, och standardfyllningsförhållandet är 0.75 vilket också liknar HashMap-klassen.

Viktiga skillnader mellan HashMap och LinkedHashMap i Java

  1. Den viktigaste skillnaden är att inplaceringsordern för HashMap inte bevaras, medan insättningsordern för LinkedHashMap bevaras .
  2. Datastrukturen som används av HashMap för att lagra elementen på kartan är Hashtable . Å andra sidan är den datastruktur som används av LinkedHashMap länklistan och Hashtable .
  3. HashMap-klassen utökar AbstractMap- klassen och implementerar Map- gränssnittet. Klassen LinkedHashMap är dock en klass i HashMap- klassen, dvs LinkedHashMap-klassen utökar HashMap-klassen.
  4. HashMap-klass introducerades i JDK 2.0- versionen. LinkedHashMap-klassen introducerades senare i JDK 4.0- versionen.
  5. Jämförbar LinkedHashMap-klassen har högre kostnader än HashMap eftersom det måste behålla ordningen för de element som är införda i kartan.

Slutsats:

LinkedHashMap får endast användas där vi är oroade över sekvensen av de element som är införda i kartan.

Top