String的hashCode问题

03-11-13 agilejava
在这个版问这个问题,不知合适不:)?

我看了String中hashCode的实现:

public int hashCode() {

int h = hash;

if (h == 0) {

int off = offset;

char val[] = value;

int len = count;

for (int i = 0; i < len; i++) {

h = 31*h + val[off++];

}

hash = h;

}

return h;

}

在它的说明中是按这个式子算的:

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

这是它的说明

using int arithmetic, where s is the i th character of the string, <code>n</code> is the length of

the string, and <code>^</code> indicates exponentiation.

(The hash value of the empty string is zero.)

问题在于我自怎么也看不懂程序的实现是按那个式计算的吗?请高手指教,谢谢!

猜你喜欢