String에서 Java의 hashCode()가 31을 승수로 사용하는 이유
Java에서 String 객체의 해시 코드는 다음을 사용하여 계산됩니다. 공식:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
여기서 s[i]는 i번째 문자입니다. n은 문자열의 길이이고 ^는 지수를 나타냅니다.
소수 승수의 중요성
이 공식의 주요 측면 중 하나는 소수를 사용하면 해시 충돌 가능성을 줄일 수 있다는 장점이 있습니다. 소수가 아닌 승수를 사용하면 동일한 해시 값을 가진 두 문자열이 공통 인수를 공유할 수 있으므로 해시 충돌이 더 쉽게 발생할 수 있습니다.
왜 또 다른 소수가 아닌가?
31은 홀수 소수이지만 29, 37, 97 등 선택될 수 있는 다른 소수도 있습니다. 31의 선택은 여러 요소의 조합을 기반으로 했습니다:
위 내용은 Java의 문자열 hashCode()가 승수로 31을 사용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!