Sobes.tech
Junior — Middle

Puteți explica structura internă și modul de funcționare al HashMap în limbajul Java?

sobes.tech AI

Răspuns de la AI

HashMap în Java este o structură de date pentru stocarea perechilor cheie-valoare cu acces rapid pe baza cheii.

Structura internă:

  • HashMap utilizează un array de containere (bucket array).
  • Pentru cheie, se calculează un cod hash (hashCode), care apoi este transformat într-un index al array-ului.
  • În fiecare container, se stochează elemente cu același index, de obicei sub formă de listă înlănțuită sau arbore (cu Java 8, dacă există multe coliziuni).

Funcționare:

  • La inserarea unui obiect, se calculează indexul pe baza hash-ului cheii.
  • Dacă containerul este gol, elementul este plasat acolo.
  • Dacă containerul este ocupat, se verifică egalitatea cheilor (equals) pentru a actualiza valoarea sau a adăuga un element nou.
  • La căutarea după cheie, se calculează de asemenea indexul și se parcurg elementele din container pentru a găsi potrivirea.

Exemplu:

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 5);
int value = map.get("apple"); // 5

Astfel, HashMap asigură un timp de acces amortizat O(1), dar în cazul multor coliziuni, poate degrada la O(n).