개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.07 19:46

QuickHashStringIntHash::add 메서드 이해 도움 요청

목록
  • 프론트마법사 5일 전 2025.05.07 19:46
  • 11
    1
저는 QuickHashStringIntHash::add 메서드를 공부 중인데, 메서드의 동작 원리를 이해하지 못하고 있습니다.

QuickHashStringIntHash::add 메서드는 어떻게 String 키와 Int 값 쌍을 저장하는지 설명해 주실 수 있나요?

특히, 해시 충돌이 발생한 경우 어떻게 처리하는지 알려주세요.

그리고, add 메서드에서 사용하는 해시 함수는 어떤 알고리즘을 사용하는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  5일 전



    QuickHashStringIntHash::add 메서드는 String 키와 Int 값 쌍을 저장하는 데 사용됩니다. 메서드의 동작 원리는 다음과 같습니다.

    1. String 키를 해시 함수에 입력하여 해시 코드를 계산합니다.
    2. 해시 코드를 사용하여 해시 테이블의 인덱스 값을 계산합니다.
    3. 인덱스 값에 해당하는 해시 테이블의 슬롯에 Int 값 쌍을 저장합니다.

    해시 충돌이 발생한 경우, 메서드는 다음과 같이 처리합니다.

    1. 충돌이 발생한 인덱스 값에 해당하는 해시 테이블의 슬롯에 저장된 Int 값 쌍을 확인합니다.
    2. 확인된 Int 값 쌍과 새로운 Int 값 쌍을 비교합니다.
    3. 동일한 키가 이미 존재하는 경우, 새로운 Int 값 쌍을 덮어씁니다.
    4. 동일한 키가 존재하지 않는 경우, 새로운 Int 값 쌍을 저장합니다.

    QuickHashStringIntHash::add 메서드에서 사용하는 해시 함수는 FNV-1a 해시 함수를 사용합니다. FNV-1a 해시 함수는 32비트 해시 함수로, 다음과 같은 특징을 가지고 있습니다.

    1. 해시 함수는 상수 시간 복잡도를 가지고 있습니다.
    2. 해시 함수는 충돌이 적게 발생합니다.
    3. 해시 함수는 키의 순서에 영향을 받지 않습니다.

    FNV-1a 해시 함수의 알고리즘은 다음과 같습니다.

    1. 초기 해시 코드를 2166136261로 설정합니다.
    2. 키의 각 바이트를 확인합니다.
    3. 확인된 바이트를 XOR 연산을 통해 해시 코드에 추가합니다.
    4. 해시 코드를 16777219로 곱합니다.
    5. 결과를 해시 코드에 저장합니다.
    6. 키의 모든 바이트를 확인한 후, 최종 해시 코드를 반환합니다.

    2025-05-07 19:47

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 18,954건 / 1 페이지

검색

게시물 검색