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ää.
Ennen kuin ymmärrät HashMapin sisäisen toiminnan, sinun on oltava tietoinen hashCode()- ja equals()-menetelmistä.
tehdä skriptistä suoritettavaa
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.
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.
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
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ä.