首页 > Java > java教程 > 如何重写Java中的equals()方法以进行准确的对象比较?

如何重写Java中的equals()方法以进行准确的对象比较?

Linda Hamilton
发布: 2024-12-26 21:15:14
原创
476 人浏览过

How to Override the equals() Method in Java for Accurate Object Comparison?

重写 Java 中的 equals() 方法进行对象比较

在 Java 中,equals() 方法允许您确定两个对象是否相同是平等的。默认情况下,equals() 比较对象引用,这并不总是所需的行为。重写 equals() 方法使您能够定义自己的比较逻辑。

场景:

您想要重写 People 类中的 equals() 方法,该类具有两个数据字段:姓名和年龄。您的目标是根据姓名和年龄来比较人物对象。

自定义 equals() 方法:

要覆盖 equals() 方法,您可以在People 类:

public boolean equals(People other) {
    // Null check and class check
    if (other == null || getClass() != other.getClass()) {
        return false;
    }

    // Downcast to People
    People otherPeople = (People) other;

    // Compare fields using == for primitive types (age) and equals() for objects (name)
    return name.equals(otherPeople.name) && age == otherPeople.age;
}
登录后复制

修复原始类型比较:

原始代码尝试使用equals()来比较age字段,这是一个原始类型。基本类型有自己的相等比较运算符(在本例中为 ==)。修改age.equals(other.age)为age == other.age可以解决这个问题。

使用示例:

在Main类中,一个Person的ArrayList对象被创建。 equals() 方法用于比较人和打印结果:

ArrayList<Person> people = new ArrayList<>();
people.add(new Person("Subash Adhikari", 28));
// ...

// Compare people objects
for (int i = 0; i < people.size() - 1; i++) {
    for (int y = i + 1; y <= people.size() - 1; y++) {
        boolean check = people.get(i).equals(people.get(y));

        // Print comparison result
        System.out.println("-- " + people.get(i).getName() + " - VS - " + people.get(y).getName());
        System.out.println(check);
    }
}
登录后复制

输出:

程序会打印比较的人是否相等。例如:

-- Subash Adhikari - VS - K false
-- Subash Adhikari - VS - StackOverflow false
-- Subash Adhikari - VS - Subash Adhikari true
登录后复制

以上是如何重写Java中的equals()方法以进行准确的对象比较?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板