要判断ArrayList中是否包含一个对象,需要重写该对象的equals方法。默认情况下,ArrayList使用对象的equals方法来判断是否包含某个对象。如果没有重写equals方法,默认会使用Object类中的equals方法,它只会比较对象的引用是否相等。
以下是一个示例代码,演示如何重写equals方法来比较对象的属性是否相等:
import java.util.ArrayList;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重写equals方法
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
// 重写hashCode方法(可选)
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
public class Main {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
Person person1 = new Person("Alice", 20);
Person person2 = new Person("Bob", 25);
list.add(person1);
list.add(person2);
// 判断ArrayList中是否包含person1
System.out.println(list.contains(person1)); // 输出true
}
}
在上面的示例中,我们重写了Person类的equals方法,根据name和age来比较两个对象是否相等。然后,我们将两个Person对象添加到ArrayList中,并使用contains方法来判断ArrayList是否包含person1对象。由于我们重写了equals方法,所以contains方法会正确地判断ArrayList中是否包含person1对象,并返回true。