实际上,您碰巧触发了纯粹的巧合。:)
Objects.hash碰巧是通过相继添加每个给定对象的哈希码,然后将结果乘以31来实现的,而
String.hashCode对每个字符都执行相同的操作。碰巧的是,您所使用的“英语”字符串中的差异与字符串末尾的偏移量恰好比“
Chamorro”字符串中的差异大了一个偏移量,因此所有内容都可以完美抵消。恭喜你!
尝试其他字符串,您可能会发现它可以按预期工作。正如其他人已经指出的那样,严格来说,这种效果实际上并没有错,因为即使哈希码表示的对象不相等,哈希码也可能正确冲突。如果有的话,尝试找到一个更有效的哈希值可能是值得的,但我认为在现实情况下几乎没有必要。



