非空字符串的哈希码是否可以为零?
2022-09-01 14:16:07
通过“非空”,我的意思是在这个问题上一个字符串,它至少包含一个非零字符。
作为参考,以下是实现:hashCode
1493 public int hashCode() {
1494 int h = hash;
1495 if (h == 0) {
1496 int off = offset;
1497 char val[] = value;
1498 int len = count;
1499
1500 for (int i = 0; i < len; i++) {
1501 h = 31*h + val[off++];
1502 }
1503 hash = h;
1504 }
1505 return h;
1506 }
并且算法在文档中指定。
在整数溢出发生之前,答案很简单:不。但我想知道的是,由于整数溢出,非空字符串的哈希码是否可能为零?你能建造一个吗?
理想情况下,我正在寻找的是数学演示(或指向一个演示的链接)或构造算法。