Olá!
Estou com um quebra-cabeça aqui…
Tenho uma classe Estudante que possue uma lista de Inscricoes assim como uma ID única.
Quero colocar um grupo de objetos dessa classe Estudante dentro de um TreeSet. Utilizo TreeSet porque os elementos estão sempre ordenados e únicos.
Preciso ordenar os estudantes pela quantidade de inscrições que eles têm. Quanto mais inscrições, mais alto na lista um estudante deve estar.
Minha classe estudante têm esses métodos_:
...
@Override
public boolean equals(Object obj) {
if(this == obj)
return true;
if((obj == null) || (obj.getClass() != this.getClass()))
return false;
if(obj instanceof Cours) {
Etudiant e = (Etudiant)obj;
return getIdEtudiant() == e.getIdEtudiant();
} else {
return false;
}
}
@Override
public int hashCode() {
return getIdEtudiant();
}
public int compareTo(Etudiant e) {
return Integer.valueOf(getMesCours().size()).compareTo(e.getMesCours().size()) ;
}
O problema é que quando o método compareTo retorna 0, o que indica que os estudantes têm o mesmo número de inscições, o TreeSet não inclue o estudante na lista. Ele assume que os estudantes são iguais…
Alguém saberia uma implementação do compareTo que resolvesse esse quebra-cabeça.