日期:2014-05-20  浏览次数:20731 次

谁能给讲为什么要覆盖HashCode,equals,实现Comparable .
谁能给讲讲对像比较时为什么要覆盖HashCode,equals,实现Comparable   .啊。
详细点,本人初学。谢了。

------解决方案--------------------
比较是不是一样总要有个规则,这个规则就是equals的实现了,否则就要用Object默认的方法, 但是默认的一般是不好用的.
Comparable 是排序用的, 比较两个对象哪个排前面那个排后面

仔细看看jdk的文档就ok

------解决方案--------------------
equals()方法是判断两个对象是否一致的,如果不实现该方法,那么只能使用object默认的equals(),这个只有在两个对象是同一个对象,亦即 地址一样的情况下才返回true; Comparable接口是处理两个对象,排在前,排在后的问题的;实现hashcode()方法,是为了保证在hashtable和hashmap中使用该类的对象可以快速查找到,这牵涉到hashtable和hashmap的查找机制----先确定hashcode,再在这个集合中查找。
总之,如果你的类是数据结构类,需要作比较,要用来排序,那就需要实现equals()和compareTo()方法;如果该类的对象要用在hashtable或hashmap中保存,那就需要实现hashcode()方法;反之,如果你的类,就是个方法类,那这几个方法都没必要实现,如java中的Collections类就没有实现这几个方法。