在我说Java的时候.
String str= "abcd";
str.hashCode();
Run Code Online (Sandbox Code Playgroud)
我的问题是什么时候计算Hashcode?@第1行或@第2行?
我假设,哈希码是预先计算的.每当更新字符串时,哈希码也可能"更新".
或者它的另一种方式,即每当你调用str.hashCode()java时,使用这里描述的公式计算它.
字符串无法更新,因为它们是不可变的,并且在计算一次后缓存该值:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1650 次 |
| 最近记录: |