而且, 每个对象都应该有一个 ToString, 以便它能够打印出一个字符串的表示形式, 以便进行调试。这也是合理的, 对象应该能够比较自己与其他对象的平等(equal)。...但是其中有一定的风险,如果您有这样一个对象,并且将其放在哈希表中, 则需要一些协议来确保对象在哈希表中不会突变, 从而使对象和维护哈希表的代码保持一致。...如果一个hash表中的对象的hash值改变了,很明显包含方法将不能正常工作,你把这个对象放到5号桶中,然后hash值突变,在使用contain方法判断对象是否存在时,它就到74号桶里查找,自然是找不到的...如果您在星期二在一个进程中做了这样一个对象, 请将其关闭, 并在星期三再次运行该程序, 哈希代码可能会有所不同。...十多年前, 我为 msn.com 后端服务器使用的表编写了一个字符串哈希算法。我认为这是一个合理的随机分布的算法, 但我犯了一个错误, 它不是。