Junior — Middle
Puteți explica principiul de funcționare a hashing-ului în implementarea unui map (Map)?
sobes.tech AI
Răspuns de la AI
În Go, o hartă (map) este implementată ca un tabel de dispersie, unde cheile sunt transformate în valori hash folosind o funcție hash. Principiul de funcționare a dispersiei în hartă este următorul:
- Pentru o cheie dată, se calculează un cod hash — o valoare numerică care depinde de conținutul cheii.
- Codul hash este folosit pentru a determina indicele în array-ul de containere (coșuri), unde se stochează valoarea.
- Dacă în coș există mai multe elemente (coliziune), se face o căutare prin lanț sau alt mecanism de rezolvare a coliziunilor.
Acest lucru permite găsirea, adăugarea și ștergerea rapidă a elementelor după cheie, cu o complexitate amortizată de aproximativ O(1).
Exemplu de utilizare a unei hărți în Go:
m := make(map[string]int)
m["apple"] = 5
value := m["apple"] // value == 5
În acest exemplu, șirul "apple" este hash-uit, iar valoarea 5 este stocată în coșul corespunzător.