Java中String的哈希值计算

时间:2021-07-27 04:50:37

下面都是从String类的源码中粘贴出来的

 private int hash; // Default to 0
 public int hashCode() {
         int h = hash;
         if (h == 0 && value.length > 0) {
             char val[] = value;
             for (int i = 0; i < value.length; i++) {
                 h = 31 * h + val[i];
             }
             hash = h;
         }
         return h;
 }

下面利用上述方法计算字符串”Lee”的哈希值

‘L’的ASCII码为76,’e’的ASCII码为101

for循环3次

  1. h=31*0+76=76
  2. h=31*76+101=2457
  3. h=31*2457+101=76268

所以字符串”Lee”的哈希码就是76268