Verschil tussen HashMap en Hashtable in Java
Inhoud
De HashMap en Hashtable, beide worden gebruikt om een groep objecten die zijn vertegenwoordigd in
Laten we de onderstaande vergelijkingstabel bekijken om nog meer verschillen tussen HashMap en Hashtable te leren.
- Vergelijkingstabel
- Definitie
- Belangrijkste verschillen
- overeenkomsten
- Gevolgtrekking
Vergelijkingstabel
Basis voor vergelijking | Hash kaart | Hashtable |
---|---|---|
Implementeren / uitbreiden | De HashMap-klasse implementeert de kaartinterface en breidt een AbstractMap-klasse uit. | De Hashtable is een uitbreiding van de klasse Dictionary Legacy, maar deze is opnieuw ontworpen en implementeert nu ook de kaartinterface. |
Synchronisatie | HashMap is niet gesynchroniseerd en daarom is het HashMap-object niet veilig. | Hashtable is gesynchroniseerd, en daarom is het object van Hashtable thread safe. |
Toetsen / Value | Een sleutel kan de Null slechts één keer retourneren, maar een waarde kan een willekeurig aantal keren Null retourneren. | Een sleutel kan Null niet retourneren omdat deze wordt gebruikt om de hash-code te verkrijgen die zal worden gebruikt als een index van de hashtabel, noch kan een waarde Null retourneren. |
Standaard initiële capaciteit | De standaard initiële capaciteit van HashMap is 16. | De standaard initiële capaciteit van Hashtable is 11. |
doorkruisen | HashMap wordt doorkruist door Iterator. | Net als de Map-klasse ondersteunt Hashtable ook niet direct Iterator voor verplaatsingen en daarom gebruikt het Enumerator. |
Definitie van HashMap
HashMap is een klasse die de Kaart interface en breidt de AbstractMap klasse gebruikt de hashtabel. Het object van de HashMap verwijst naar een verzameling / set van / * K staat voor sleutel en V staat voor waarde * / klasse HashMap De eerste constructor is een standaardconstructor die een leeg object van HashMap initialiseert met een standaardcapaciteit van 16 en een standaardvulverhouding van 0,75. De tweede constructor initialiseert de hashmap met de waarde van m. De derde constructor maakt een hashmap met de initiële capaciteit die overeenkomt met de waarde die is opgegeven in argument "capaciteit". De vierde constructor initialiseert de hashmap met een capaciteit en een opvulverhouding die in de parameters is opgegeven. laten we nu leren hoe we de items in een hashkaart kunnen invoeren. 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} In bovenstaande code kun je zien dat ik een leeg HashMap-object heb gemaakt hm met standaard initiële capaciteit en standaard vullingsverhouding. Vervolgens heb ik vier items in de hashmap ingevoegd met de put (K, V) -methode die de sleutel toewijst aan de waarde. U kunt zien dat items niet worden bewerkt in een volgorde waarin u ze invoert, omdat de invoegvolgorde niet is vastgelegd. Overweeg nu een geval dat u al een vermelding hebt Hashtable is een klasse die de Woordenboek klasse die een legacy-klasse is en opnieuw is ontworpen om de Kaart interface. De hashtabel gebruikt de hashtabel als gegevensstructuur. De Hashtable is vergelijkbaar met HashMap, omdat hier ook het object van Hashtable verwijst naar de verzameling items waarbij elke entry een paar / * K geeft de sleutel aan en V geeft de waarde aan die is gekoppeld aan de sleutel * / class Hashtable In bovenstaande code is de eerste constructor een standaardconstructor die een leeg object van een klasse Hashtable maakt, de standaardgrootte is 11 en de standaardvulverhouding is 0,75. De tweede constructor maakt een hashtabel met de grootte die overeenkomt met de waarde die is opgegeven in de parameter "grootte". De derde constructor maakt een hashtabel met een grootte en een opvulverhouding die in de parameter is opgegeven. De vierde constructor initialiseert de hashtabel met de waarde m. Laten we nu leren hoe de Hashtable ht = new Hashtable (); ht.put (nieuwe hashCode (2), 275); ht.put (nieuwe hashCode (12), 250); ht.put (nieuwe hashCode (16), 150); ht.put (nieuwe hashCode (8), 200); System.out.ln (ht); / * uitvoer * / {12 = 250, 16 = 150,2y = 275, 8 = 200} In bovenstaande code heb ik een leeg object van Hashtable gemaakt en vier ingangen ingevoegd met de methode put (). Inside put-methode noemde ik hashCode () die de hash-codewaarde berekent en retourneert die zal fungeren als de indexwaarde voor het invoerobject. Zoals je kunt zien, heb ik de grootte van de hashtabel niet genoemd, dus deze wordt standaard 11. Ook hier wordt de invoegvolgorde niet bewaard en daarom werd de invoer ingevoerd als ed items niet in volgorde werden weergegeven. HashMap is beter in prestaties omdat zijn objecten niet gesynchroniseerd zijn en meerdere threads er tegelijkertijd op kunnen werken en daarom is het sneller dan Hashtable.
Definitie van Hashtable
overeenkomsten:
Gevolgtrekking: