美文网首页
覆写List中元素的equals方法

覆写List中元素的equals方法

作者: 鱿鱼炸酱面 | 来源:发表于2021-07-19 22:34 被阅读0次

equals方法

在使用List<E>泛型对象的contains或者indexOf方法来查找元素时,实际循环查找的时候使用的是元素的equals方法进行比较,所以当List中元素为自定义类型时,需要对其覆写equals方法。

编写equals

equals()方法的编写:

  1. 先确定实例“相等”的逻辑,即哪些字段相等,就认为实例相等;
  2. 用instanceof判断传入的待比较的Object是不是当前类型,如果是,继续比较,否则,返回false;
  3. 对引用类型用Objects.equals()比较,对基本类型直接用==比较。
    比如下面,我们实现了Person类的equals方法用以以其为泛型类型组成的List使用contains或者indexOf方法判断元素是否存在:
import java.util.List;
import java.util.Objects;

public class Main {
    public static void main(String[] args) {
        List<Person> list = List.of(
                new Person("Xiao", "Ming", 18),
                new Person("Xiao", "Hong", 25),
                new Person("Bob", "Smith", 20)
        );
        boolean exist = list.contains(new Person("Bob", "Smith", 20));
        System.out.println(exist ? "测试成功!" : "测试失败!");
    }
}

class Person {
    String firstName;
    String lastName;
    int age;
    public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Person person)) return false;
        return age == person.age && Objects.equals(firstName, person.firstName) && Objects.equals(lastName, person.lastName);
    }
}

相关文章

网友评论

      本文标题:覆写List中元素的equals方法

      本文链接:https://www.haomeiwen.com/subject/yxrkmltx.html