黑马程序员技术交流社区

标题: hashcode和equals到底先调用哪个?? [打印本页]

作者: gentleman    时间: 2014-5-24 08:22
标题: hashcode和equals到底先调用哪个??
本帖最后由 gentleman 于 2014-5-24 08:24 编辑

在像HashSet中添加对象的时候是先调用hashcode还是先调用equals


  1. public int hashCode()
  2.         {
  3.                 System.out.println(this.name+"....hashCode");
  4.                 return name.hashCode()+age*37;
  5.         }



  6.         public boolean equals(Object obj)
  7.         {

  8.                 if(!(obj instanceof Person))
  9.                         return false;

  10.                 Person p = (Person)obj;
  11.                 System.out.println(this.name+"...equals.."+p.name);

  12.                 return this.name.equals(p.name) && this.age == p.age;
  13.         }
复制代码



       
       


作者: Up↑Lee↗    时间: 2014-5-24 08:31
HashSet保证元素唯一性
                        是通过元素的两个方法,hashCodeequals来完成。
                        如果元素的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