Forskellen mellem HashMap og Hashtable i Java
Indhold
HashMap og Hashtable bruges begge til at repræsentere en gruppe af objekter der er repræsenteret i
Lad os se sammenligningstabellen nedenfor for at lære flere forskelle mellem HashMap og Hashtable.
- Sammenligningstabel
- Definition
- Vigtige forskelle
- ligheder
- Konklusion
Sammenligningstabel
Grundlag for sammenligning | HashMap | hashtabelsamling |
---|---|---|
Implementere / udvide | HashMap-klassen implementerer Map-interface og udvider en AbstractMap-klasse. | Hashtabellen strækker sig fra klassen Dictionary Legacy, men den er genudviklet og nu implementerer den også Map-interface. |
Synkronisering | HashMap er ikke synkroniseret, og HashMap-objektet er derfor ikke trådt sikkert. | Hashtable er synkroniseret, og derfor er Hashtable-objektet tråd-sikkert. |
Nøgler / værdi | En nøgle kan kun returnere Null én gang, men en værdi kan returnere Null ethvert antal tid. | En nøgle kan ikke returnere Null, da den bruges til at få den hash-kode, der vil blive brugt som et indeks for hash-tabellen, og heller ikke en værdi kan returnere Null. |
Standard startkapacitet | Den oprindelige startkapacitet på HashMap er 16. | Den oprindelige startkapacitet på Hashtable er 11. |
gennemkører | HashMap krydses af Iterator. | Ligesom Map class Hashtable heller ikke direkte understøtter Iterator til at krydse og dermed bruger den Enumerator. |
Definition af HashMap
HashMap er en klasse, der implementerer Kort interface og udvider AbstractMap klasse bruger hash-tabellen. HashMap's objekt refererer til en samling / sæt med / * K repræsenterer nøgle, og V repræsenterer værdi * / klasse HashMap Den første konstruktør er en standardkonstruktør, der initialiserer et tomt objekt fra HashMap med en standardkapacitet på 16 og et standardfyldningsforhold på 0,75. Den anden konstruktør initialiserer hashkortet med værdien m. Den tredje konstruktør opretter et hashkort med den indledende kapacitet svarende til værdien leveret i argumentet “kapacitet”. Den fjerde konstruktør initialiserer hashkort med en kapacitet og et fyldningsforhold, der findes i parametrene. lad os nu lære at fodre posterne på et hashkort. Hashmap hm = ny Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} I ovenstående kode kan du se, at jeg oprettede et tomt HashMap-objekt hm med standard initialkapacitet og standardfyldningsforhold. Derefter indsatte jeg fire poster i hashkortet ved hjælp af put (K, V) metode, der kortlægger nøglen til værdien. Du kan observere, at poster ikke redigeres i en sekvens, du fodrer dem, fordi indsættelsesrækkefølgen ikke er fast. Overvej nu en sag, hvor du allerede har en post Hashtable er en klasse, der udvider Ordbog klasse, der er en arv klasse og genudvikles til at gennemføre Kort grænseflade. Hashtabellen bruger hash-tabellen som dens datastruktur. Hashtabellen ligner HashMap, da også her Hashtables objekt henviser til samlingen af poster, hvor hver post er et par af / * K specificerer nøglen, og V specificerer den værdi, der er knyttet til nøglen * / klasse Hashtable I ovenstående kode er den første konstruktør en standardkonstruktør, der opretter et tomt objekt i en klasse Hashtable, dens standardstørrelse er 11 og standardpåfyldningsforholdet er 0,75. Den anden konstruktør opretter en hashtabel med den størrelse, der svarer til den værdi, der er angivet i parameteren ”størrelse”. Den tredje konstruktør opretter en hash-tabel med en størrelse og et fyldningsforhold, der findes i parameteren. Den fjerde konstruktør initialiserer hashtabellen med værdien m. Lad os nu lære at indsætte Hashtable ht = ny Hashtable (); 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); / * output * / {12 = 250, 16 = 150,2y = 275, 8 = 200} I ovenstående kode oprettede jeg et tomt objekt fra Hashtable og indsatte fire poster ved hjælp af put () -metoden. Inside put-metode kaldte jeg hashCode (), som beregner og returnerer hashkodeværdien, der fungerer som indeksværdien for indgangsobjekt. Som du kan se nævnte jeg ikke størrelsen på hashtabellen, så som standard er den 11. Her er også indsættelsesrækkefølge ikke bevaret, og når ed-poster ikke vises i rækkefølge, blev den fodret. HashMap har en bedre ydelse, da dens objekter er usynkroniserede, og flere tråde kan operere på det på samme tid, og det er derfor hurtigere end Hashtable.
Definition af Hashtable
ligheder:
Konklusion: