Junior — Middle
Wyjaśnij, co oznacza kolizja kluczy w strukturze danych HashMap i jak sobie z tym radzi.
sobes.tech AI
Odpowiedź od AI
Kolizja kluczy (collision hash) w HashMap występuje, gdy dwa różne klucze podczas obliczania funkcji hash dają ten sam indeks do przechowywania w tablicy.
Jak sobie z tym radzi HashMap:
- W Java HashMap używa łańcuchów (list powiązanych lub zrównoważonych drzew) do przechowywania wielu elementów, które trafiają do tego samego kubełka.
- Przy dodawaniu nowego elementu z kluczem, którego hash pokrywa się z istniejącym, nowy element jest dodawany do łańcucha tego kubełka.
- Podczas wyszukiwania klucza, HashMap przeszukuje elementy w łańcuchu, porównując klucze metodą equals(), aby znaleźć właściwy.
Od Java 8, jeśli łańcuch stanie się zbyt długi, jest przekształcany w zrównoważone drzewo (TreeNode), co poprawia wydajność wyszukiwania z O(n) do O(log n).