如何找出 TreeSet 包含具有隐式字段值的复杂对象
How to find out that a TreeSet contains a complex object with implicit field value
我有一个简单的class实习生:
public class Trainee {
private String firstName, lastName;
private int grade;
// constructors, getters-setters, etc.
而且我需要编写一个方法来寻找 TreeSet<Trainee>
中同名不同姓的实习生。我的第一次尝试只是用 for-each 迭代 TreeSet,然后简单的 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 class 中的 Object.equals() 方法。
public boolean equals (Object o)
{
return this.firstName.equals(((Trainee)o).getFirstName());
}
并调用 set.contains(obj)
检查 Object 是否存在于 Set 中。
我有一个简单的class实习生:
public class Trainee {
private String firstName, lastName;
private int grade;
// constructors, getters-setters, etc.
而且我需要编写一个方法来寻找 TreeSet<Trainee>
中同名不同姓的实习生。我的第一次尝试只是用 for-each 迭代 TreeSet,然后简单的 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 class 中的 Object.equals() 方法。
public boolean equals (Object o)
{
return this.firstName.equals(((Trainee)o).getFirstName());
}
并调用 set.contains(obj)
检查 Object 是否存在于 Set 中。