在 Java 中,equals() 方法用于比较两个对象是否相等
重写 equals() 方法时,请确保遵循以下规则:
在实现 equals() 方法时,通常需要比较对象的属性。可以使用 == 运算符比较基本数据类型(如 int、float、double 等),使用 equals() 方法比较引用数据类型(如 String、Date 等)。
当重写 equals() 方法时,还需要重写 hashCode() 方法。这是因为散列表(如 HashMap、HashSet 等)依赖于 hashCode() 方法来存储和检索对象。如果两个对象相等(即 equals() 方法返回 true),那么它们的 hashCode() 方法必须返回相同的值。
以下是一个示例,展示了如何在 Java 类中正确地实现 equals() 方法:
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } Person person = (Person) obj; if (age != person.age) { return false; } return name != null ? name.equals(person.name) : person.name == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + age; return result; }}在这个示例中,我们创建了一个名为 Person 的类,其中包含 name 和 age 属性。我们重写了 equals() 方法来比较两个 Person 对象是否相等,同时还重写了 hashCode() 方法。


