【发布时间】:2013-03-24 11:50:43
【问题描述】:
int value = 5381;
for (int i = 0; i < item.length(); i++) {
value = value * 33 + item.charAt(i);
}
value &= 0x7fffffff;
value %= size;
这是伯恩斯坦的哈希码。除了最后两行之外,我得到了所有内容。他们在做什么?它们还会在 Java 编译器中产生错误,因此它们显然不是有效代码。他们还能怎么表现?
我几乎不在乎他们做什么,只要他们能工作就可以了:P
【问题讨论】:
-
如果您不认识某个 Java 运算符,只需在 Google 中输入“Java 运算符”即可。
-
编译(和运行)对我来说很好。当然,您必须将
item定义为 String 并将size定义为 int。item是您要散列的字符串,size是您将使用生成的value索引的散列表的大小。