判断两个对象是否相等的技巧分享

22 min read

要判断两个对象是否相等,需要根据具体情况来确定。对于基本数据类型,可以直接通过比较值来判断它们是否相等;对于引用类型,需要使用对象的等同性(equality)来进行比较。

对于Java中的Object类,提供了equals()方法用于比较两个对象是否相等。它的默认实现是比较两个对象的引用是否相等,在某些情况下需要重写它的实现方式,来判断对象的等同性。另外在重写equals()方法时最好也重写hashCode()方法,以保证对象在使用哈希表等数据结构时能够正确地处理相等。

对于自定义的类,可以通过比较对象的属性值等来判断它们是否等同。如果两个对象的每个属性的值都相等,那么它们可以认为是等同的。例如:

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 (obj == this) {
            return true;
        }
        if (!(obj instanceof Person)) {
            return false;
        }
        Person other = (Person) obj;
        return Objects.equals(this.name, other.name) &&
               this.age == other.age;
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

这里重写了equals()和hashCode()方法,通过比较name和age两个属性值来判断Person对象是否等同。注意要使用Objects.equals()方法来比较字符串是否相等,而不是使用==运算符。