logo

HashMapin työskentely Javassa


Mikä on Hashing

Se on prosessi, jossa objekti muunnetaan kokonaislukuarvoksi. Kokonaislukuarvo auttaa indeksoinnissa ja nopeampia hakuja.

Mikä on HashMap

HashMap on osa Java-kokoelmakehystä. Se käyttää tekniikkaa nimeltä Hashing. Se toteuttaa karttaliittymän. Se tallentaa tiedot avaimen ja arvon pariin. HashMap sisältää joukon solmuja, ja solmu esitetään luokkana. Se käyttää sisäisesti taulukkoa ja LinkedList-tietorakennetta avaimen ja arvon tallentamiseen. HashMapissa on neljä kenttää.

HashMapin työskentely Javassa

Ennen kuin ymmärrät HashMapin sisäisen toiminnan, sinun on oltava tietoinen hashCode()- ja equals()-menetelmistä.

tehdä skriptistä suoritettavaa
    yhtä kuin ():Se tarkistaa kahden objektin yhtäläisyyden. Se vertaa avainta, ovatko ne samanarvoisia tai eivät. Se on Object-luokan menetelmä. Se voidaan ohittaa. Jos ohitat equals()-metodin, hashCode()-metodin ohittaminen on pakollista.hash koodin():Tämä on objektiluokan menetelmä. Se palauttaa objektin muistiviitteen kokonaislukumuodossa. Metodista saatua arvoa käytetään ämpärinumerona. Ryhmän numero on kartan sisällä olevan elementin osoite. Nolla-avaimen hash-koodi on 0.Kauhat:Solmun joukkoa kutsutaan kauhoiksi. Jokaisella solmulla on tietorakenne, kuten LinkedList. Useampi kuin yksi solmu voi jakaa saman ryhmän. Sen kapasiteetti voi olla erilainen.
HashMapin työskentely Javassa

Lisää avain, arvopari HashMapiin

Käytämme put()-menetelmää avain- ja arvoparin lisäämiseen HashMapiin. HashMapin oletuskoko on 16 (0 - 15).

Esimerkki

Seuraavassa esimerkissä haluamme lisätä kolme (avain, arvo) paria HashMapiin.

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

Katsotaan mihin indeksiin avain-arvopari tallennetaan HashMapiin. Kun kutsumme put()-menetelmää, se laskee avaimen 'Aman' hash-koodin. Oletetaan, että 'Aman':n hash-koodi on 2657860. Avaimen tallentamiseksi muistiin meidän on laskettava indeksi.

Indeksin laskeminen

Indeksi minimoi taulukon koon. Indeksin laskentakaava on:

java-koodaus if else-lauseessa
 Index = hashcode(Key) & (n-1) 

Missä n on taulukon koko. Siksi Amanin indeksiarvo on:

 Index = 2657860 & (16-1) = 4 

Arvo 4 on laskettu indeksiarvo, johon avain ja arvo tallennetaan HashMapiin.

HashMapin työskentely Javassa

Hash törmäys

Näin on silloin, kun laskettu indeksiarvo on sama kahdelle tai useammalle avaimelle. Lasketaan hash-koodi toiselle avaimelle 'Sunny'. Oletetaan, että 'Sunny':n hash-koodi on 63281940. Avaimen tallentamiseksi muistiin meidän on laskettava indeksi käyttämällä indeksikaavaa.

 Index=63281940 & (16-1) = 4 

Arvo 4 on laskettu indeksiarvo, johon avain tallennetaan HashMapiin. Tässä tapauksessa equals()-metodi tarkistaa, ovatko molemmat avaimet samat vai eivät. Jos avaimet ovat samat, korvaa arvo nykyisellä arvolla. Muussa tapauksessa yhdistä tämä solmuobjekti olemassa olevaan solmuobjektiin LinkedList-luettelon kautta. Siksi molemmat avaimet tallennetaan indeksiin 4.

HashMapin työskentely Javassa

Vastaavasti tallennamme avaimen 'Ritesh'. Oletetaan, että avaimen hash-koodi on 2349873. Indeksin arvo on 1. Tästä syystä tämä avain tallennetaan indeksiin 1.

array.javasta
HashMapin työskentely Javassa

get() -menetelmä HashMapissa

get() -menetelmää käytetään arvon saamiseksi avaimellaan. Se ei nouta arvoa, jos et tiedä avainta. Kun get(K Key) -menetelmää kutsutaan, se laskee avaimen hash-koodin.

Oletetaan, että meidän on haettava avain 'Aman'. Seuraavaa menetelmää kutsutaan.

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

Se luo hash-koodin muodossa 2657860. Laske nyt indeksiarvo 2657860 käyttämällä indeksikaavaa. Indeksin arvo on 4, kuten olemme laskeneet edellä. get()-metodi etsii indeksin arvoa 4. Se vertaa ensimmäistä elementtiä Key annettuun avaimeen. Jos molemmat avaimet ovat samat, se palauttaa arvon else check solmun seuraavalle elementille, jos se on olemassa. Skenaariossamme se löytyy solmun ensimmäiseksi elementiksi ja palauttaa arvon 19.

Haetaan toinen Key 'Sunny'.

Avaimen 'Sunny' hash-koodi on 63281940. Laskettu indeksiarvo 63281940 on 4, kuten olemme laskeneet put()-menetelmälle. Siirry taulukon hakemistoon 4 ja vertaa ensimmäisen elementin avainta annettuun avaimeen. Se vertaa myös avaimia. Skenaariossamme annettu avain on toinen elementti ja solmun seuraava on nolla. Se vertaa toista elementtiä Key määritettyyn avaimeen ja palauttaa arvon 29. Se palauttaa nollan, jos solmun seuraava on tyhjä.