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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李铁 中级黑马   /  2012-10-23 22:48  /  2029 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李铁 于 2012-10-24 11:55 编辑

hashCode相等,对象调用equals()一定相等嘛?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

4 个回复

倒序浏览
肯定不一样啦。equals方法是继承于object类,默认为==,判断两个对象是否相等,当然有些类像String这样重写过equals方法的类除外了。
hashcode:主要应用在hashmap和hashtree,hashtable集合框架里面。这些集合类底层都是哈希数据结构,这些集合框架不允许有相同对象存入。那么如何判断是否是同个对象呢:这些集合类先通过比较对象自身的hashcoe方法,如果是否再比较equals方法,再为否就可以判断是两个对象了,就可以存入了。我们实际使用的时候肯定不能单纯都通过==来比较是否是同一事物,所以要重写这两个方法来满足现实需求。因能力有限,可能回答的不到位。详细你可以参考有关集合框架的视频教材,讲的比较深入。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
为了保证对象的唯一性,一般需要重写HashCode   equals方法。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
在使用HashSet或HashMap集合时,如果你想让相同的对象(指的是对象中的内容,而不是引用)存不进这样的集合,则就需要重写hashCode和equals方法。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
创建类的时候,一般都需要重写,因为以后可能用到

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马