如何找出TreeSet包含具有隐式字段值的复杂对象

问题描述 投票:0回答:2

我有一个简单的班级实习生:

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中的每个元素不是一个好主意。我真的不知道如何解决这个问题。咩。

java collections treeset
2个回答
0
投票
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());
}

我希望这就是答案。


0
投票

覆盖Trainee类中的Object.equals()方法。

public boolean equals (Object o)  
{
   return this.firstName.equals(((Trainee)o).getFirstName());  
}

并调用set.contains(obj)来检查Set中是否存在Object。

© www.soinside.com 2019 - 2024. All rights reserved.