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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© treecolor166 中级黑马   /  2013-12-18 23:28  /  1080 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 treecolor166 于 2013-12-19 22:39 编辑

一个类实现了Comparable接口后,一定要覆盖hashCode()和equals()方法吗,覆盖这两个方法有什么作用

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

2 个回复

倒序浏览
FFF 金牌黑马 2013-12-18 23:57:48
沙发
覆盖hashCode()和equals()方法主要是自定义比较两个对象的方法。不覆盖也没事,如果你的对象本身就具有比较性的话!
回复 使用道具 举报
equals()方法是判断两个对象是否一致的,如果不实现该方法,那么只能使用object默认的equals(),这个只有在两个对象是同一个对象,亦即 地址一样的情况下才返回true; Comparable接口是处理两个对象,排在前,排在后的问题的;实现hashcode()方法,是为了保证在hashtable和hashmap中使用该类的对象可以快速查找到,这牵涉到hashtable和hashmap的查找机制----先确定hashcode,再在这个集合中查找。
总之,如果你的类是数据结构类,需要作比较,要用来排序,那就需要实现equals()和compareTo()方法;如果该类的对象要用在hashtable或hashmap中保存,那就需要实现hashcode()方法;反之,如果你的类,就是个方法类,那这几个方法都没必要实现,如java中的Collections类就没有实现这几个方法。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

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