黑马程序员技术交流社区

标题: 为什么覆写equals()方法最好连hashCode()方法一起覆写 [打印本页]

作者: nuddlesW    时间: 2014-11-17 20:10
标题: 为什么覆写equals()方法最好连hashCode()方法一起覆写
如题,小白我刚学习j2se,看到这个,想弄明白为为什么要这样,哪位大神能不能通俗易懂的讲解下
作者: 李运岚    时间: 2014-11-17 20:21
好像比较的时候是先比较哈希值,再比较字符,如果哈希值不一样就不用比较字符了,不知道是不是这样?
作者: xiaguangcheng    时间: 2014-11-17 20:48
我们今天刚好学了这个,比如在HashSet集合类中,如果在自定义的类中,不覆盖hashCode() 和equals()方法的话,输出来的结果就无法表现HashSet的唯一性,也就是无重复元素。因为hashCode()方法得到的是由地址值计算出来的逻辑整数表达值,这个值可以将不同的对象区分开。为了在添加元素时,将重复对象排除在外,通过比较hash值是一个很好的途径,但是只比较hash值一个,又不太靠谱,所以重写equals()方法比较内容,就保障了添加元素无重复的准确性。
作者: 不轻易    时间: 2014-11-17 20:56
楼上说的好~~~
作者: cvnmklop    时间: 2014-11-17 22:08
因为后面设计到集合。集合里有HashSet 需要用到。还有HashMap集合中用作键的对象必须实现hashCode和equals




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