Java-wrapper类和hashCode()

Java-wrapper类和hashCode(),java,hashcode,wrapper,Java,Hashcode,Wrapper,Integer的hashCode()和intValue()返回的黑白值是否有差异?hashcode可以是负数吗?不,没有区别,因此可以是负数或零 从: 返回:此对象的哈希代码值,等于此整型对象表示的原始int值 不,没有区别,因此是的,它可以是负数或零 从: 返回:此对象的哈希代码值,等于此整型对象表示的原始int值 Integer.hashCode()只返回值,是的。。。尽管依靠它不是一个好主意。散列码的返回值实际上应该只是用作不透明值,而不附加任何特定的含义——只应考虑相等性。即使Integ

Integer的
hashCode()
intValue()
返回的黑白值是否有差异?hashcode可以是负数吗?

不,没有区别,因此可以是负数或零

从:

返回:此对象的哈希代码值,等于此
整型
对象表示的原始int值


不,没有区别,因此是的,它可以是负数或零

从:

返回:此对象的哈希代码值,等于此
整型
对象表示的原始int值

Integer.hashCode()
只返回值,是的。。。尽管依靠它不是一个好主意。散列码的返回值实际上应该只是用作不透明值,而不附加任何特定的含义——只应考虑相等性。即使
Integer.hashCode()
被记录为只返回值(编辑:是的;请参阅其他答案),如果实现更改为返回值(比如)
value+1
,我也会非常小心任何代码会被破坏

hashCode()
的返回值当然可以是负数,无论是在这里还是在一般情况下。

Integer.hashCode()
只返回值,是的。。。尽管依靠它不是一个好主意。散列码的返回值实际上应该只是用作不透明值,而不附加任何特定的含义——只应考虑相等性。即使
Integer.hashCode()
被记录为只返回值(编辑:是的;请参阅其他答案),如果实现更改为返回值(比如)
value+1
,我也会非常小心任何代码会被破坏


hashCode()
的返回值当然可以是负数,无论是在这里还是一般情况下。

Integer i=new Integer(-1);Map Map=newhashmap();map.put(i,“测试”);//这会引发indexoutofboundsexception吗???@Arjun:当然不会,地图没有索引。它们有键,只要它们正确地实现equals和hashCode(无论如何对于HashMap),键的类型和值都是无关的。map.put(i,“测试”);//在内部,它将是数组[i.hashCode()]=“test”,所以我遇到了这个疑问。如果我错了,请纠正我。@Arjun:是的,但它可以处理所有哈希代码值。如果没有,您就不能这样做:
map.put(“你好,世界!”,someObj)。在均匀分布的散列中,负散列码值与正散列码值一样常见。但是你不会真的认为每个哈希映射都有一个大小为
Integer.MAX_VALUE
的数组来容纳所有的正哈希码,是吗?有一个简单的模块化算法可以将任何int转换成有效的bucket索引。是的,thxs有很多标记,看起来像bucket_index=(i.hashCode()&&0x7ffffff)%hashmap_size在这里起作用。整数i=新整数(-1);Map Map=newhashmap();map.put(i,“测试”);//这会引发indexoutofboundsexception吗???@Arjun:当然不会,地图没有索引。它们有键,只要它们正确地实现equals和hashCode(无论如何对于HashMap),键的类型和值都是无关的。map.put(i,“测试”);//在内部,它将是数组[i.hashCode()]=“test”,所以我遇到了这个疑问。如果我错了,请纠正我。@Arjun:是的,但它可以处理所有哈希代码值。如果没有,您就不能这样做:
map.put(“你好,世界!”,someObj)。在均匀分布的散列中,负散列码值与正散列码值一样常见。但是你不会真的认为每个哈希映射都有一个大小为
Integer.MAX_VALUE
的数组来容纳所有的正哈希码,是吗?有一种简单的模块化算法可以将任何int转换为有效的bucket索引。是的,thx有很多标记,看起来像bucket_index=(i.hashCode()&&0x7FFFFFFFF)%hashmap_size在这里起作用。