Sobes.tech
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:

  1. Pentru o cheie dată, se calculează un cod hash — o valoare numerică care depinde de conținutul cheii.
  2. Codul hash este folosit pentru a determina indicele în array-ul de containere (coșuri), unde se stochează valoarea.
  3. 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.