logo

Werking van HashMap in Java


Wat is hashen

Het is het proces waarbij een object wordt omgezet in een geheel getal. De gehele waarde helpt bij het indexeren en sneller zoeken.

Wat is HashMap

HashMap is een onderdeel van het Java-collectieframework. Het maakt gebruik van een techniek genaamd Hashing. Het implementeert de kaartinterface. Het slaat de gegevens op in het paar Sleutel en Waarde. HashMap bevat een array van knooppunten en het knooppunt wordt weergegeven als een klasse. Het maakt intern gebruik van een array en LinkedList-gegevensstructuur voor het opslaan van sleutel en waarde. Er zijn vier velden in HashMap.

Werking van HashMap in Java

Voordat u de interne werking van HashMap begrijpt, moet u op de hoogte zijn van de hashCode() en equals() methode.

Linux-bestanden
    is gelijk aan():Het controleert de gelijkheid van twee objecten. Het vergelijkt de Sleutel, of ze nu gelijk zijn of niet. Het is een methode van de klasse Object. Het kan worden overschreven. Als u de methode equals() overschrijft, is het verplicht om de methode hashCode() te overschrijven.hashCode():Dit is de methode van de objectklasse. Het retourneert de geheugenreferentie van het object in de vorm van gehele getallen. De waarde die van de methode wordt ontvangen, wordt gebruikt als het bucketnummer. Het bucketnummer is het adres van het element op de kaart. Hashcode van nulsleutel is 0.Emmers:De array van het knooppunt wordt buckets genoemd. Elk knooppunt heeft een gegevensstructuur zoals een LinkedList. Meer dan één knooppunt kan dezelfde bucket delen. Het kan qua capaciteit verschillen.
Werking van HashMap in Java

Voeg sleutel en waardepaar in HashMap in

We gebruiken de methode put() om het sleutel- en waardepaar in de HashMap in te voegen. De standaardgrootte van HashMap is 16 (0 tot 15).

Voorbeeld

In het volgende voorbeeld willen we drie (sleutel, waarde) paren invoegen in de HashMap.

 HashMap map = new HashMap(); map.put('Aman', 19); map.put('Sunny', 29); map.put('Ritesh', 39); 

Laten we eens kijken bij welke index het sleutel-waardepaar in HashMap wordt opgeslagen. Wanneer we de methode put() aanroepen, berekent deze de hashcode van de sleutel 'Aman.' Stel dat de hashcode van 'Aman' 2657860 is. Om de sleutel in het geheugen op te slaan, moeten we de index berekenen.

verschil tussen bedrijf en bedrijf

Index berekenen

Index minimaliseert de grootte van de array. De formule voor het berekenen van de index is:

 Index = hashcode(Key) & (n-1) 

Waarbij n de grootte van de array is. Daarom is de indexwaarde voor 'Aman':

 Index = 2657860 & (16-1) = 4 

De waarde 4 is de berekende indexwaarde waar de sleutel en waarde in HashMap worden opgeslagen.

Werking van HashMap in Java

Hash-botsing

Dit is het geval wanneer de berekende indexwaarde voor twee of meer sleutels hetzelfde is. Laten we de hashcode voor een andere sleutel 'Sunny' berekenen. Stel dat de hashcode voor 'Sunny' 63281940 is. Om de sleutel in het geheugen op te slaan, moeten we de index berekenen met behulp van de indexformule.

 Index=63281940 & (16-1) = 4 

De waarde 4 is de berekende indexwaarde waar de sleutel in HashMap wordt opgeslagen. In dit geval controleert de methode equals() of beide sleutels gelijk zijn of niet. Als de sleutels hetzelfde zijn, vervangt u de waarde door de huidige waarde. Anders verbindt u dit knooppuntobject met het bestaande knooppuntobject via de LinkedList. Daarom worden beide sleutels opgeslagen in index 4.

json-formaat voorbeeld
Werking van HashMap in Java

Op dezelfde manier zullen we de sleutel 'Ritesh' opslaan. Stel dat de hashcode voor de sleutel 2349873 is. De indexwaarde is 1. Daarom wordt deze sleutel opgeslagen op index 1.

Werking van HashMap in Java

get() methode in HashMap

get() methode wordt gebruikt om de waarde op te halen via de sleutel. De waarde wordt niet opgehaald als u de sleutel niet kent. Wanneer de get(K Key)-methode wordt aangeroepen, berekent deze de hashcode van de sleutel.

Stel dat we de sleutel 'Aman' moeten halen. De volgende methode wordt aangeroepen.

 map.get(new Key('Aman')); 

Het genereert de hashcode als 2657860. Bereken nu de indexwaarde van 2657860 met behulp van de indexformule. De indexwaarde zal 4 zijn, zoals we hierboven hebben berekend. get() methode zoekt naar de indexwaarde 4. Het vergelijkt het eerste element Key met de gegeven Key. Als beide sleutels gelijk zijn, retourneert het de waarde else check voor het volgende element in het knooppunt, als dit bestaat. In ons scenario wordt het gevonden als het eerste element van het knooppunt en wordt de waarde 19 geretourneerd.

Laten we nog een sleutel 'Sunny' halen.

De hashcode van de sleutel 'Sunny' is 63281940. De berekende indexwaarde van 63281940 is 4, zoals we hebben berekend voor de put()-methode. Ga naar index 4 van de array en vergelijk de sleutel van het eerste element met de gegeven sleutel. Het vergelijkt ook Keys. In ons scenario is de gegeven sleutel het tweede element en is het volgende van het knooppunt nul. Het vergelijkt het tweede element Sleutel met de opgegeven Sleutel en retourneert de waarde 29. Het retourneert null als het volgende van het knooppunt nul is.