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

© 何万县 中级黑马   /  2012-4-4 17:19  /  1777 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashSet中,比较两元素相等,先比较HashCode,若相等再用equals比较,equals方法比较的是啥?不是HashCode吗?

3 个回复

倒序浏览
equals()方法是在Object中定义的,比较的是两个对象的类存地址是否相等。
其他的对象可以复写Object类中的equals()方法,定义我们想要比较的内容。
回复 使用道具 举报
hascode实际上是返回的对象存储的物理地址。
HashSet类按照哈希算法来存取对象,当向集合中加入一个新对象时,会调用对象的HashCode()方法得到对象的哈希码,然后根据这个码计算出对象在集合中存储的位置。 为了保证HashSet能正常工作,要求当两个对象用equals比较相等时,hashCode也要相等,否则就会有可能加入两个相同的项。

Object类中定义了hashCode()和equals(Object o)方法,如果object1.equals(object2),那么说明这两个引用变量指向同一个对象,那么object1 and object2的hashCode也一定相等。
回复 使用道具 举报
如果你建立学生对象,对象中有姓名、年龄,想按年龄排序,那么equals中比较的
当然先是年龄,如果年龄相同,再按姓名排,如果还相同,就可以认为是一个对象了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马