黑马程序员技术交流社区

标题: 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? [打印本页]

作者: hurryup    时间: 2014-1-4 13:50
标题: 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
这句话到底对不对啊,网上有的说对有的说不对,谁可以给个比较靠谱的?各位大牛来看看
作者: jibenwujie    时间: 2014-1-4 14:09
equals方法比较的并不是两个变量的值,而是其哈希码。rug  
作者: 嘿╰_╯往哪里跑    时间: 2014-1-4 14:37
hashCode是对象的唯一标记 如果说两个对象的唯一标记相等 其equals的结果必须相等。
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
作者: 午夜b'Boy    时间: 2014-1-4 18:38
学集合时有说的,在hashset中,判断元素是否为同一个,先由hashcode()方法比较哈希值,哈希值一致,再用equals()方法比较,两个对象的哈希值可以一样,良好的哈希算法,有利于集合操作,所以在类的设计上,
如果equals()方法返回true.他们的hashcode()方法应该返回的值也一致




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2