Как узнать, что TreeSet содержит сложный объект с неявным значением поля - PullRequest
0 голосов
/ 15 марта 2019

У меня есть простой класс Trainee:

public class Trainee {
private String firstName, lastName;
private int grade;

// constructors, getters-setters, etc.

И мне нужно написать метод, который ищет стажера с тем же именем и другой фамилией в TreeSet<Trainee>.Моя первая попытка состояла в том, чтобы просто повторить TreeSet с for-each и затем простой if-конструкцией, возвращая true / false, но мой учитель сказал, что проверка каждого элемента в TreeSet не является хорошей идеей.Я действительно не знаю, как решить это.Мех.

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Переопределить метод Object.equals () в классе Стажер.

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

И вызовите set.contains(obj), чтобы проверить, присутствует ли объект в наборе или нет.

0 голосов
/ 15 марта 2019
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());
}

Я надеюсь, что это ответ.

...