两个对象相等,对两个对象分别调用equals方法都返回true,如果两个对象相等,则hashcode一定也是相同的,假如只重写equals而不重写hashcode,那么hashcode方法就是Object默认的hashcode方法,由于默认的hashcode方法是根据对象的内存地址经哈希算法得来的,两者的hashcode不一定相等。
在java的集合中,判断两个对象是否相等的规则是:
1.判断两个对象的hashCode是否相等
如果不相等,认为两个对象也不相等,完毕,所以如果hashcode()没有被重写,在set和map中两个相等对象的key就会判断为不相等
如果相等,转入2
2.判断两个对象用equals运算是否相等
如果不相等,认为两个对象也不相等
如果相等,认为两个对象相等(equals()是判断两个对象是否相等的关键)