黑马程序员技术交流社区

标题: HashSet问题 [打印本页]

作者: 何万县    时间: 2012-4-4 17:19
标题: HashSet问题
HashSet中,比较两元素相等,先比较HashCode,若相等再用equals比较,equals方法比较的是啥?不是HashCode吗?
作者: 陈超    时间: 2012-4-4 17:24
equals()方法是在Object中定义的,比较的是两个对象的类存地址是否相等。
其他的对象可以复写Object类中的equals()方法,定义我们想要比较的内容。
作者: 刘士    时间: 2012-4-4 17:26
hascode实际上是返回的对象存储的物理地址。
HashSet类按照哈希算法来存取对象,当向集合中加入一个新对象时,会调用对象的HashCode()方法得到对象的哈希码,然后根据这个码计算出对象在集合中存储的位置。 为了保证HashSet能正常工作,要求当两个对象用equals比较相等时,hashCode也要相等,否则就会有可能加入两个相同的项。

Object类中定义了hashCode()和equals(Object o)方法,如果object1.equals(object2),那么说明这两个引用变量指向同一个对象,那么object1 and object2的hashCode也一定相等。
作者: 刘元明    时间: 2012-4-4 17:29
如果你建立学生对象,对象中有姓名、年龄,想按年龄排序,那么equals中比较的
当然先是年龄,如果年龄相同,再按姓名排,如果还相同,就可以认为是一个对象了




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