【发布时间】:2011-04-12 16:29:57
【问题描述】:
Integer 的hashCode() 和intValue() 返回的黑白值有什么不同吗? hashcode可以是负数吗?
【问题讨论】:
Integer 的hashCode() 和intValue() 返回的黑白值有什么不同吗? hashcode可以是负数吗?
【问题讨论】:
【讨论】:
map.put("Hello, world!", someObj);。负 hashCode 值与均匀分布散列中的正 hashCode 值一样常见。但是您不会真的认为每个哈希映射都有一个大小为Integer.MAX_VALUE 的数组来容纳所有 positive hashCode,是吗?有简单的模运算可以将任何 int 转换为有效的桶索引。
Integer.hashCode() 只是返回值,是的......虽然依赖它不是一个好主意。哈希码的返回值实际上应该只用作一个不透明的值而不附加任何特殊含义 - only 真正应该考虑相等性。即使Integer.hashCode() 被记录 只是返回值(编辑:它是;见其他答案),我会非常警惕如果实现更改为返回会破坏的任何代码(比如)value + 1.
hashCode() 的返回值当然是允许为负的——这里和一般情况下都是这样。
【讨论】: