String の Java の hashCode() が乗数として 31 を使用する理由
Java では、String オブジェクトのハッシュ コードは、式:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
ここで、s[i] は i 番目の文字です文字列の長さ、n は文字列の長さ、^ はべき乗を示します。
素数乗数の重要性
この式の重要な側面の 1 つは、次の用途です。素数を使用すると、ハッシュ衝突の可能性が減るという利点があります。素数以外の乗数が使用された場合、同じハッシュ値を持つ 2 つの文字列が共通の因数を共有する可能性があり、ハッシュの衝突が発生しやすくなります。
Why Not Another Prime Number?
31 は奇数の素数ですが、29、37、97 など、他の素数も選択できます。
以上がJava の String hashCode() が乗数として 31 を使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。