///////
Search
👩🏻

Hash Collision이 많이 발생할 경우 어떤 최적화가 진행될까요?

트리(Red-Black tree) 를 이용한 체이닝 기법

기존의 체이닝 기법에서, 링크드 리스트 대신 탐색에 있어 더 높은 효율을 보이는 트리를 접목
충돌된 키-값 쌍의 데이터가 8개가 모이면 링크드 리스트를 트리로 변경하고, 6개로 줄면 다시 링크드 리스트로 변경한다.

해시 버킷 동적 확장

데이터의 크기에 비해 해시 테이블의 크기가 넉넉치 않으면 해시 충동 가능성이 높아져 성능 손실을 일으킨다.
따라서, 성능 상승을 위해 JAVA HashMap은 Key-value 데이터 개수가 일정 개수 이상이 되면, 해시 버킷의 수를 두배로 늘린다.
참고