我有一个简单的班级实习生:
public class Trainee {
private String firstName, lastName;
private int grade;
// constructors, getters-setters, etc.
我需要编写一个方法,在TreeSet<Trainee>
中寻找具有相同名称和不同姓氏的实习生。我的第一次尝试是迭代TreeSet with for-each然后简单的if-construction,返回true / false,但我的老师说检查TreeSet中的每个元素不是一个好主意。我真的不知道如何解决这个问题。咩。
public static boolean findWithAnotherLastName(TreeSet<Trainee> trs, Trainee someone) {
Trainee lower = trs.lower(someone);
Trainee higher = trs.higher(someone);
if (lower != null && lower.getFirstName().equals(someone.getFirstName())) {
return true;
}
return higher != null && higher.getFirstName().equals(someone.getFirstName());
}
我希望这就是答案。
覆盖Trainee类中的Object.equals()方法。
public boolean equals (Object o)
{
return this.firstName.equals(((Trainee)o).getFirstName());
}
并调用set.contains(obj)
来检查Set中是否存在Object。