黑马程序员技术交流社区

标题: 什么情况下重写hashCode和equals方法? [打印本页]

作者: 李铁    时间: 2012-10-23 22:48
标题: 什么情况下重写hashCode和equals方法?
本帖最后由 李铁 于 2012-10-24 11:55 编辑

hashCode相等,对象调用equals()一定相等嘛?
作者: 林志进    时间: 2012-10-23 23:22
肯定不一样啦。equals方法是继承于object类,默认为==,判断两个对象是否相等,当然有些类像String这样重写过equals方法的类除外了。
hashcode:主要应用在hashmap和hashtree,hashtable集合框架里面。这些集合类底层都是哈希数据结构,这些集合框架不允许有相同对象存入。那么如何判断是否是同个对象呢:这些集合类先通过比较对象自身的hashcoe方法,如果是否再比较equals方法,再为否就可以判断是两个对象了,就可以存入了。我们实际使用的时候肯定不能单纯都通过==来比较是否是同一事物,所以要重写这两个方法来满足现实需求。因能力有限,可能回答的不到位。详细你可以参考有关集合框架的视频教材,讲的比较深入。
作者: 给生活加点料    时间: 2012-10-23 23:35
为了保证对象的唯一性,一般需要重写HashCode   equals方法。
作者: 汪小照    时间: 2012-10-23 23:39
在使用HashSet或HashMap集合时,如果你想让相同的对象(指的是对象中的内容,而不是引用)存不进这样的集合,则就需要重写hashCode和equals方法。
作者: 李润根    时间: 2012-10-23 23:42
创建类的时候,一般都需要重写,因为以后可能用到




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