当对一个对象有不同的判断equals的标准时,我们可以重写equals方法。重写equals必须按一下步骤
定义个一个类。
- class Student {
- private String name;
- private int age;
- // getters and setters
- }
重写时要遵循以下三步:
1. 判断是否等于自身.
如何重写hashCode()方法
如果你重写了equals()方法,那么一定要记得重写hashCode()方法.否则就会出现,明明已经重写了equals方法,但没有达到想要的结果。
例如,重写一个equals,只要Student类中的成员变量name和age相同就认为对象相同。 如果没有重写hashcode方法,当我们把
Student s1=new Student("张三","18");
Student s2=new Student("张三","18");
这2个对象加入HashSet中,发现2个都加入了,这不是想要的结果,就是因为s1,s2的hashcode返回值不同。
hashcode方法重写时要保证“你认为相同的对象都有同一个返回值” 例如:
- @Override
- public int hashCode() {
- int result =10;
- result = result * 31 + name.hashCode();
- result = result * 31 + age;
- return result;
- }