Используйте набор.
Набор - это коллекция, которая, в отличие от списка, не допускает дублирования.
Set<Student> reEvaluationDetails = new HashSet<Student>();
reEvaluationDetails.add(s1);
reEvaluationDetails.add(s2);
reEvaluationDetails.add(s3);
reEvaluationDetails.add(s4);
reEvaluationDetails.add(s5);
reEvaluationDetails.add(s6);
reEvaluationDetails.add(s7);
и переопределяет равенства и хэш-код:
class Student {
int id;
String name;
int whatever;
Student(int id, String name, int whatever) {
this.id = id;
this.name = name;
this.whatever = whatever;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id &&
whatever == student.whatever &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name, whatever);
}
}
Когда вы проверите, что находится в наборе, вы увидите, что дубликатов нет.
Это самый эффективный способ сделать это.
Вы можете проверить, работает ли здесь .