黑马程序员技术交流社区
标题: hashcode和equals到底先调用哪个?? [打印本页]
作者: gentleman 时间: 2014-5-24 08:22
标题: hashcode和equals到底先调用哪个??
本帖最后由 gentleman 于 2014-5-24 08:24 编辑
在像HashSet中添加对象的时候是先调用hashcode还是先调用equals
- public int hashCode()
- {
- System.out.println(this.name+"....hashCode");
- return name.hashCode()+age*37;
- }
- public boolean equals(Object obj)
- {
- if(!(obj instanceof Person))
- return false;
- Person p = (Person)obj;
- System.out.println(this.name+"...equals.."+p.name);
- return this.name.equals(p.name) && this.age == p.age;
- }
复制代码
作者: Up↑Lee↗ 时间: 2014-5-24 08:31
HashSet保证元素唯一性
是通过元素的两个方法,hashCode和equals来完成。
如果元素的HashCode值相同,才会判断equals是否为true。
如果元素的hashcode值不同,不会调用equals。
由上所述可知先判断hashCode,根据hashcode的值再来看需不需要判断equals
作者: 张志民 时间: 2014-5-24 08:33
楼上正解
作者: 路漫漫_求索 时间: 2014-5-24 11:30
二楼正解
作者: 执笔梦 时间: 2014-5-29 23:07
二楼正解吧.
作者: yinxjfly 时间: 2014-5-29 23:13
二楼正解!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |