首先需要明确
- Java中的超类Object类中定义的equals()方法是用来比较两个引用所指向的对象的内存地址是否一致
- 两个对象有相同的hashcode值,它们也不一定是相等的
为什么需要重写hashCode()方法和equals()方法
- 为什么要重写equals()方法。我们在定义类时,我们经常会希望两个不同对象的某些属性值相同时就认为他们相同,所以我们要重写equals()方法,按照原则,我们重写了equals()方法,也要重写hashCode()方法。
- 但是Java中的超类Object类中定义的equals()方法是用来比较两个引用所指向的对象的内存地址是否一致
在什么情况下需要重写hashCode()方法和equals()方法
- 当我们自定义的一个类,想要把它的实例保存在集合中时,我们就需要重写这两个方法;集合(Collection)有两个类,一个是List,一个是Set
- 其中,List:集合中的元素是有序的,可以重复的;
- Set:无序,不可重复的;
如何重写hashCode()方法和equals()方法
- 创建一个实体类,然后添加成员变量。
- 右键-->source-->Generate hashcode and equals
参考:https://blog.csdn.net/xlgen157387/article/details/63683882