JAVA重写equals方法
为什么需要重写equals方法
equals方法本是判断两个对象的内容是否相等,判断的依据则是对象中的所有成员变量是否相等,而未重写的equals方法是继承自Object类中的,它的判断逻辑是对象引用所指向的是否为同一对象,而在集合中很多时候需要判断,集合中是否存在相同对象时,就需要重写equals方法了。
如何重写equals方法
一个好的equals()应该满足以下的要求:
-
自反性:对任何的非空引用x,满足x.equals(x)返回true。
-
对称性:对任意的x和y,x.equals(y)返回的结果与y.equals()的结果相同。
-
传递性:对于任意的x,y,z,如果x.equals(y) x.equals(z)返回都为true,那么y.equals(z)的返回值也为true。
-
一致性:在对象没有被改变的时候,多次调用equals方法的结果不会改变。
-
非空性:对于任何非空的对象引用x,x.equals(null)返回的结果为false。
重写equals方法时必须重写hashCode方法
public class Animal {
private String name;
private int id;
public Animal(String name,int id){
this.name=name;