作者:叶斯琪147- | 来源:互联网 | 2023-05-26 18:51
"random".hashCode()
返回值-938285885.是否预期负值hashCode()
?
根据以下问题,有一种方法hashCode()
可以计算字符串,但是使用它,随着字符串长度的增加,值不会继续增加,最终会大于Integer.MAX_VALUE
?
1> Jon Skeet..:
是否期望hashCode()的负值?
它们完全有效,是的.
随着字符串长度的增加并且最终大于Integer.MAX_VALUE,值是否会不断增加?
是什么让你认为哈希码随着字符串长度的增加而增加?
基本上,您应该将哈希码视为指纹 - 位的集合而不是具有有意义的数量的数字.散列码计算经常上溢或下溢,这绝对没问题."更多"或"更少"是哈希码之间的无关比较 - 所有相关的都是"相等"或"不相等",其中规则是两个相等值的哈希码必须相等,但哈希码为两个非哈希码- 等值可能仍然相等.数值在分段方面是相关的,但这通常是使用它们的任何实现细节.
哈希码只是查找绝对不相等的值的快速方法.因此,考虑一种情况,我有一组带有哈希码{1,-15,20,5,100}的字符串.如果给我一个哈希码为14的字符串,我知道字符串肯定不在集合中.如果给我一个哈希码为20的字符串,我需要用equals
我的集合中的字符串检查它,哈希码为20,以查看候选字符串是否在集合中.