Основываясь на вашем исходном вопросе и комментариях, обсуждаемых под ним, и ответе Робби, я бы переформулировал ваш вопрос следующим образом: как оптимальным образом управлять набором объектов, имеющих 3 разных ключа, используемых для сопоставления равенства? Поэтому я отвечу на этот вопрос, на случай, если кто-то будет обвинять в том, что не ответил на исходный вопрос.
Мое предложение - создать класс-оболочку для хранения карт размером 3 га sh и сравнения ваших объектов Student с этими 3 строковыми ключами с его помощью.
Вот моя реализация с предположением, что ваши ключи являются полями publi c, а не закрытыми, как указано в исходном сообщении. * и вот код для его тестирования или для понимания того, как я себе представлял его использование:
List<Student> students = new LinkedList();
students.add(new Student("spades", "hearts", "diamonds"));
students.add(new Student("hearts", "diamonds", "clubs"));
students.add(new Student("spades", "diamonds", "hearts"));
StudentX group = new StudentX();
group.bulkAddStudents(students);
Student noob = new Student("diamonds", "clubs", "hearts"); //try different values for proper testing
if (group.findStudent(noob) != null) {
System.out.println("Student found");
} else {
System.out.println("Student not found");
}
Надеюсь, это было ясно, что я имел в виду с классом-оболочкой для хранения 3 га sh -карт для оптимального поиска и сравнение.