假设散列表是一个索引为0到HASHSIZE-1的数组。该函数返回正确范围内的值,并且不会生成任何运行时错误。假设在String中传入的字符至少有2个字符。为什么它是一个糟糕的散列函数?为什么给定的散列函数是一个糟糕的散列函数?
public static int hash(String key) {
return (key.charAt(0)
+ key.charAt(1)
+ key.charAt(key.length()-1) % HASHSIZE;
}
看起来会有很多碰撞,这很糟糕。 – Carcigenicate
检查分配 –
它似乎也忽略了大部分字符串的内容,这是没用的。 – Carcigenicate