📜  String Hashcode 值是如何计算的?

📅  最后修改于: 2022-05-13 01:54:59.250000             🧑  作者: Mango

String Hashcode 值是如何计算的?

String hashCode()方法以 Integer 形式返回此 String 的 hashcode 值。

句法:
公共 int hashCode()

例如:

import java.io.*;
  
class GFG {
    public static void main(String[] args)
    {
        String str = "GFG";
        System.out.println(str);
  
        int hashCode = str.hashCode();
        System.out.println(hashCode);
    }
}
输出:
GFG
70472

但这里的问题是,这个整数值 70472 是如何打印出来的。如果您再次尝试查找该字符串的哈希码值,结果将是相同的。那么这个String hashcode是怎么计算出来的呢?

字符串哈希码是如何计算的?
字符串的哈希码值是在公式的帮助下计算的:

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

在哪里:

  • s[i]表示字符串的第 i 个字符
  • ^指指数操作数
  • n表示字符串的长度

例子:

在上述情况下,字符串是“GFG”。因此:

s[] = {'G', 'F', 'G'}
n = 3

因此哈希码值将计算为:

s[0]*31^(2) + s[1]*31^1 + s[2]
= G*31^2 + F*31 + G
= (as ASCII value of G = 71 and F = 70)
  71*312 + 70*31 + 71 
= 68231 + 2170 + 71
= 70472

这是作为输出接收的值。

因此,这就是 String hashcode 值的计算方式。

空字符串的HashCode值?

在这种情况下,字符串是“”。因此:

s[] = {}
n = 0

因此哈希码值将计算为:

s[0]*31^(0)
= 0

因此,空字符串的哈希码值始终为 0。