我正在尝试在Java中从一个字符串获取一个ID,我认为可以使用哈希码(是的,两个字符串可以有相同的哈希码,但我可以接受这种小概率)。我想让这个ID最多只有4位数字。这可能吗?
这是字符串默认的hashCode实现:
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;
}
我可以覆盖它以生成一个只有4位数字的哈希值吗?
return h % 10000
; 这行代码应该可以正常工作。 - Iłya Bursov@Override
任何未被标记为final或private的继承方法。但是,将哈希码长度缩短到4位数字的含义是什么? - Nikolas Charalambidish
可以为负数之外... - Holger