Skillnaden mellan HashMap och Hashtable i Java
Innehåll
HashMap och Hashtable, båda används för att representera en grupp av objekt som är representerade i
Låt oss se jämförelsetabellen nedan för att lära dig mer skillnader mellan HashMap och Hashtable.
- Jämförelsediagram
- Definition
- Viktiga skillnader
- Likheter
- Slutsats
Jämförelsediagram
Grund för jämförelse | HashMap | Hashtable |
---|---|---|
Implementera / utvidga | HashMap-klassen implementerar kartgränssnittet och utökar en AbstractMap-klass. | Hashtabellen sträcker sig över klassen Dictionary Legacy men den är omkonstruerad och nu implementerar den också Kartgränssnitt. |
Synkronisering | HashMap är osynkroniserad och därför är HashMap-objektet inte gängat säkert. | Hashtabellen är synkroniserad, och följaktligen är Hashtablets objekt trådsäker. |
Nycklar / värde | En knapp kan returnera Null en gång, men ett värde kan returnera Null valfritt antal gånger. | En nyckel kan inte returnera Null eftersom den används för att erhålla hashkoden som kommer att användas som ett index för hashtabellen, och inte heller ett värde kan returnera Null. |
Standard startkapacitet | Standardkapaciteten för HashMap är 16. | Standardkapaciteten för Hashtable är 11. |
förflyttnings | HashMap korsas av Iterator. | Liksom Map-klass Hashtable inte heller stöder Iterator för att korsa och därmed använder den Enumerator. |
Definition av HashMap
HashMap är en klass som implementerar Karta gränssnitt och utökar AbstractMap klass använder hash-tabellen. HashMap's objekt hänvisar till en samling / uppsättning av / * K representerar nyckel, och V representerar värde * / klass HashMap Den första konstruktören är en standardkonstruktör som initialiserar ett tomt objekt från HashMap med en standardkapacitet på 16 och ett standardfyllningsförhållande på 0,75. Den andra konstruktören initierar haschkartan med värdet m. Den tredje konstruktören skapar en hashkarta med den initiala kapaciteten som motsvarar det värde som anges i argumentet "kapacitet". Den fjärde konstruktören initierar haschkarta med en kapacitet och ett fyllningsförhållande som anges i parametrarna. låt oss nu lära oss att mata inmatningarna på en hashkarta. Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordanien", 200); System.out.ln (hm); / * utgång * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordanien = 200} I ovanstående kod kan du se att jag skapade ett tomt HashMap-objekt hm med standardkapacitet och standardfyllningsförhållande. Sedan satte jag in fyra poster i haschkartan med hjälp av put (K, V) -metoden som kartlägger nyckeln till värdet. Du kan observera att poster inte redigeras i en sekvens som du matar dem eftersom införingsordningen inte är fixerad. Tänk nu på ett fall som du redan har en post Hashtable är en klass som utvidgar Ordbok klass som är en arvsklass och reengineerered för att genomföra Karta gränssnitt. Hashtabellen använder hash-tabellen som dess datastruktur. Hashtabellen liknar HashMap eftersom här också hänvisar objektet till Hashtable till insamlingen av poster där varje post är ett par av / * K specificerar nyckeln och V specificerar värdet associerat med nyckeln * / klass Hashtable I ovanstående kod är den första konstruktören en standardkonstruktör som skapar ett tomt objekt i en klass Hashtable, dess standardstorlek är 11 och standardfyllningsförhållandet är 0,75. Den andra konstruktören skapar en hashtabell med den storlek som motsvarar värdet som anges i parametern ”storlek”. Den tredje konstruktören skapar ett hashbord med en storlek och ett fyllningsförhållande som anges i parametern. Den fjärde konstruktören initierar hashtabellen med värdet m. Låt oss nu lära dig hur du sätter in Hashtabell ht = ny Hashtabell (); ht.put (ny hashCode (2), 275); ht.put (ny hashCode (12), 250); ht.put (ny hashCode (16), 150); ht.put (ny hashCode (8), 200); System.out.ln (ht); / * utgång * / {12 = 250, 16 = 150,2y = 275, 8 = 200} I koden ovan skapade jag ett tomt objekt från Hashtable och satte in fyra poster med put () -metoden. Inside put-metoden kallade jag hashCode () som beräknar och returnerar hashkodvärdet som kommer att fungera som indexvärdet för postobjektet. Som ni kan se nämnde jag inte storleken på hashtabellen så det kommer som standard att vara 11. Här är inte insättningsordern bevarad och därmed när ed-poster inte dyker upp i sekvens matades den. HashMap har bättre prestanda eftersom dess objekt är osynkroniserade och flera trådar kan fungera på det samtidigt och därför är det snabbare än Hashtable.
Definition av Hashtable
Likheter:
Slutsats: