A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gentleman 中级黑马   /  2014-5-24 08:22  /  1435 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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.         }
复制代码



       
       

点评

视频讲的很详细.先看完视频理解了。谢谢  发表于 2014-5-24 16:02

7 个回复

倒序浏览
HashSet保证元素唯一性
                        是通过元素的两个方法,hashCodeequals来完成。
                        如果元素的HashCode值相同,才会判断equals是否为true
                        如果元素的hashcode值不同,不会调用equals



由上所述可知先判断hashCode,根据hashcode的值再来看需不需要判断equals

点评

求帮助 共同学习 大神求带  发表于 2014-5-24 14:08

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
楼上正解
回复 使用道具 举报
二楼正解
回复 使用道具 举报
二楼正解吧.
回复 使用道具 举报
二楼正解!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马