黑马程序员技术交流社区

标题: 有关Comparable接口的问题 [打印本页]

作者: treecolor166    时间: 2013-12-18 23:28
标题: 有关Comparable接口的问题
本帖最后由 treecolor166 于 2013-12-19 22:39 编辑

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




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