这个方法会调用所比较的对象的equals方法,因此我们可以重写equals方法。
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<A> as = new ArrayList<A>();
as.add(new A(1, "test1"));
as.add(new A(2, "test2"));
as.add(new A(3, "test3"));
as.add(new A(4, "test4"));
System.out.println(as.contains(new A(5, "test1")));
System.out.println("============================");
System.out.println(as.contains(new A(5, "test5")));
}
}
class A {
private Integer id;
private String name;
public A(Integer id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof A)) {
return false;
}
A a = (A) obj;
System.out.println("参数实例id=" + a.id + ";参数实例名称=" + a.name);
System.out.println("实例id=" + id + ";实例名称=" + name);
if (name.equals(a.name)) {
return true;
} else {
return false;
}
}
}
参数实例id=1;参数实例名称=test1
实例id=5;实例名称=test1
true
============================
参数实例id=1;参数实例名称=test1
实例id=5;实例名称=test5
参数实例id=2;参数实例名称=test2
实例id=5;实例名称=test5
参数实例id=3;参数实例名称=test3
实例id=5;实例名称=test5
参数实例id=4;参数实例名称=test4
实例id=5;实例名称=test5
false