hashCode() 用于返回负值的字符串
hashCode() for string returning negative value
"random".hashCode()
returns 一个值 -938285885。 hashCode()
是否应为负值?
根据下面的问题,有一种计算字符串 hashCode()
的方法,但是使用它,值不会随着字符串长度的增加而不断增加并最终大于 Integer.MAX_VALUE
?
Are negative values expected for hashCode()?
它们完全有效,是的。
won't the value keep increasing as the length of string increase and eventually be greater than Integer.MAX_VALUE?
是什么让您认为哈希码会随着字符串长度的增加而增加?
基本上,您应该将哈希码视为指纹 - 位的集合而不是具有有意义大小的数字。哈希码计算 经常 溢出或下溢,这绝对没问题。 "More" 或 "less" 是哈希码之间不相关的比较 - 所有相关的是 "equal" 或 "not equal",其中规则是两个相等值的哈希码 必须相等,但两个不相等值的散列码可能仍然相等。数值在分桶方面是相关的,但这通常是使用它们的任何实现细节。
哈希码只是一种快速查找绝对不值的方法。因此,请考虑我有一组哈希码为 { 1, -15, 20, 5, 100 } 的字符串的情况。如果我得到一个哈希码为 14 的字符串,我知道字符串 definitely 不在集合中。如果我得到一个哈希码为 20 的字符串,我需要用 equals
与我的集合中哈希码为 20 的字符串进行检查,以查看候选字符串是否在集合中.
"random".hashCode()
returns 一个值 -938285885。 hashCode()
是否应为负值?
根据下面的问题,有一种计算字符串 hashCode()
的方法,但是使用它,值不会随着字符串长度的增加而不断增加并最终大于 Integer.MAX_VALUE
?
Are negative values expected for hashCode()?
它们完全有效,是的。
won't the value keep increasing as the length of string increase and eventually be greater than Integer.MAX_VALUE?
是什么让您认为哈希码会随着字符串长度的增加而增加?
基本上,您应该将哈希码视为指纹 - 位的集合而不是具有有意义大小的数字。哈希码计算 经常 溢出或下溢,这绝对没问题。 "More" 或 "less" 是哈希码之间不相关的比较 - 所有相关的是 "equal" 或 "not equal",其中规则是两个相等值的哈希码 必须相等,但两个不相等值的散列码可能仍然相等。数值在分桶方面是相关的,但这通常是使用它们的任何实现细节。
哈希码只是一种快速查找绝对不值的方法。因此,请考虑我有一组哈希码为 { 1, -15, 20, 5, 100 } 的字符串的情况。如果我得到一个哈希码为 14 的字符串,我知道字符串 definitely 不在集合中。如果我得到一个哈希码为 20 的字符串,我需要用 equals
与我的集合中哈希码为 20 的字符串进行检查,以查看候选字符串是否在集合中.