logo

Funcționarea HashMap în Java


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.

Funcționarea HashMap în Java

Înainte de a înțelege funcționarea internă a HashMap, trebuie să fiți conștient de metoda hashCode() și equals().

panda și numpy
    este egal():Verifică egalitatea a două obiecte. Ea compară Cheia, indiferent dacă sunt egale sau nu. Este o metodă a clasei Object. Poate fi anulat. Dacă suprascrieți metoda equals(), atunci este obligatoriu să suprascrieți metoda hashCode().hashCode():Aceasta este metoda clasei de obiecte. Returnează referința de memorie a obiectului în formă întreagă. Valoarea primită de la metodă este utilizată ca număr al găleții. Numărul găleții este adresa elementului din interiorul hărții. Codul hash al cheii nul este 0.Găleți:Matricea nodului se numește găleți. Fiecare nod are o structură de date precum LinkedList. Mai mult de un nod poate partaja aceeași găleată. Poate fi diferit ca capacitate.
Funcționarea HashMap în Java

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.

Funcționarea HashMap în Java

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.

Funcționarea HashMap în Java

Î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.

Funcționarea HashMap în Java

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.