我在书中发现了这句话:
如果两个对象的哈希码是等于的,那么这可能并不意味着对象是等于的.
有人可以解释一下这句话吗?
例如,考虑Long类的两个对象.由于hashCode
返回a int
,并且long
(和Long
)类型的范围大于int
,这意味着必须有两个Long
具有相同的对象,hashCode
即使它们彼此不相等.
答案很简单:hashCode()
意外地可以为两个完全不同的物体产生相同的数字.
哈希码是一个数字值,用于在基于哈希的集合中插入和标识对象。
它是一个固定的大小值,因此它对于每个现有对象都不是唯一的,因此有时会遭受碰撞。基本上,hashCode()可以为两个不同的对象产生相同的值。
例:
String first = "wh"; String second = "xI"; System.out.println(first.equals(second)); System.out.println(first.hashCode() + " " + second.hashCode());