我有一个作为Student的自定义类,它具有两个不同的equals方法(equals,equals1),并且具有Student1对象的两个集合,如list1和list2。当我确实使用list1.retainAll(list2)时,需要使用equals1机制而不是eqauls方法。
当我们的客户类中确实存在多个equals机制时,是否可以使用任何API来提及equals方法名称?
例子:
class Student {
public String name;
public Student(String name) {
this.name = name;
}
public boolean equals(Object obj) {
return super.equals(obj);
}
public boolean equals1(Object obj) {
if(obj == null) return false;
if(!(obj instanceof Student)) return false;
Student student = (Student) obj;
if(this.name.equals(student.name)) {
return true;
} else {
return false;
}
}
}
public class Demo {
public static void main(String[] args) {
List<Student> list1 = new ArrayList<Student>();
list1.add(new Student("AAA"));
list1.add(new Student("BCD"));
List<Student> list2 = new ArrayList<Student>();
list2.add(new Student("AAA"));
list2.add(new Student("CDE"));
// Intersection of list1 and list2
list1.retainAll(list2);
for (Student student : list1) {
System.out.println(student.name);
}
}
}
如果使用equals1方法,则预期结果为[AAA],但在这种情况下,将执行默认的equals方法,因此结果为空。
我们如何使用自定义的equals方法进行收集算法。
jeck猫
相关分类