Ce este Hashing
Este procesul de conversie a unui obiect într-o valoare întreagă. Valoarea întreagă ajută la indexare și la căutări mai rapide.
Ce este HashMap
HashMap este o parte a cadrului de colecție Java. Utilizează o tehnică numită Hashing. Implementează interfața hărții. Stochează datele în perechea Cheie și Valoare. HashMap conține o matrice de noduri, iar nodul este reprezentat ca o clasă. Utilizează o matrice și o structură de date LinkedList intern pentru stocarea cheii și valorii. Există patru câmpuri în HashMap.
Înainte de a înțelege funcționarea internă a HashMap, trebuie să fiți conștient de metoda hashCode() și equals().
panda și numpy
Inserați cheia, perechea valoare în HashMap
Folosim metoda put() pentru a insera perechea Cheie și Valoare în HashMap. Dimensiunea implicită a HashMap este 16 (de la 0 la 15).
Exemplu
În exemplul următor, dorim să inserăm trei perechi (Cheie, Valoare) în HashMap.
HashMap map = new HashMap(); map.put('Aman', 19); map.put('Sunny', 29); map.put('Ritesh', 39);
Să vedem la ce index va fi salvată perechea Cheie, valoare în HashMap. Când apelăm metoda put(), atunci aceasta calculează codul hash al cheii „Aman”. Să presupunem că codul hash al lui „Aman” este 2657860. Pentru a stoca cheia în memorie, trebuie să calculăm indexul.
Calculul indicelui
Indexul minimizează dimensiunea matricei. Formula de calcul a indicelui este:
Index = hashcode(Key) & (n-1)
Unde n este dimensiunea matricei. Prin urmare, valoarea indexului pentru „Aman” este:
java în timp ce starea
Index = 2657860 & (16-1) = 4
Valoarea 4 este valoarea indexului calculată unde cheia și valoarea vor fi stocate în HashMap.
Coliziune Hash
Acesta este cazul când valoarea indexului calculată este aceeași pentru două sau mai multe chei. Să calculăm codul hash pentru o altă cheie „Sunny”. Să presupunem că codul hash pentru „Sunny” este 63281940. Pentru a stoca cheia în memorie, trebuie să calculăm indexul utilizând formula indexului.
Index=63281940 & (16-1) = 4
Valoarea 4 este valoarea indexului calculată în care cheia va fi stocată în HashMap. În acest caz, metoda equals() verifică dacă ambele chei sunt egale sau nu. Dacă cheile sunt aceleași, înlocuiți valoarea cu valoarea curentă. În caz contrar, conectați acest obiect nod la obiectul nod existent prin LinkedList. Prin urmare, ambele chei vor fi stocate la indexul 4.
În mod similar, vom stoca Cheia „Ritesh”. Să presupunem că codul hash pentru cheie este 2349873. Valoarea indexului va fi 1. Prin urmare, această cheie va fi stocată la indexul 1.
metoda get() în HashMap
Metoda get() este folosită pentru a obține valoarea prin cheia sa. Nu va prelua valoarea dacă nu cunoașteți Cheia. Când metoda get(K Key) este apelată, aceasta calculează codul hash al cheii.
pd merge
Să presupunem că trebuie să luăm Cheia „Aman”. Se va apela următoarea metodă.
map.get(new Key('Aman'));
Acesta generează codul hash ca 2657860. Acum calculați valoarea indexului 2657860 utilizând formula indexului. Valoarea indicelui va fi 4, așa cum am calculat mai sus. Metoda get() caută valoarea indexului 4. Compară primul element Cheie cu Cheia dată. Dacă ambele chei sunt egale, atunci returnează valoarea alt check pentru următorul element din nod dacă acesta există. În scenariul nostru, se găsește ca prim element al nodului și returnează valoarea 19.
Să luăm o altă cheie „Sunny”.
Codul hash al cheii „Sunny” este 63281940. Valoarea indexului calculată a 63281940 este 4, așa cum am calculat pentru metoda put(). Mergeți la indexul 4 al matricei și comparați Cheia primului element cu Cheia dată. De asemenea, compară cheile. În scenariul nostru, cheia dată este al doilea element, iar următorul nod este nul. Compară al doilea element Key cu Key specificată și returnează valoarea 29. Returnează null dacă următorul nod este nul.