Bonjour,
Je suis sur un petit problème depuis plusieurs heures et cela commence sérieusement à m'énerver.
Voici mon problème, j'ai un treeset d'objet SommetPondere : TreeSet<SommetPondere> liste;
Cette liste doit être trié suivant l'attribut ponderation de la classe SommetPondere. Cette dernière implémente donc Comparable et voici le code du comparTo et equals :
La ligne qui ne fonctionne pas est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public int compareTo(Object a) { if(equals(((SommetPondere)a))==true) return 0; else if(ponderation==((SommetPondere)a).getPonderation() && sommet!=((SommetPondere)a).getSommet()) return 1; else if(ponderation<((SommetPondere)a).getPonderation()) return -1; else return 1; } public boolean equals(Object a) { return (((SommetPondere)a).getSommet()==this.sommet && ((SommetPondere)a).getPonderation()==this.ponderation); }
En gros je souhaite retirer l'élément en tête de liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SommetPondere tete = liste.first(); liste.remove(tete);
Lorsque j'effectue un affichage du resultat du compareTo entre l'élément tete et liste.first() il me renvoi 0 (donc éléments égaux). Lorsque je fais pareil avec le equals() il me renvoi true.
Cependant l'élément n'est toujours pas retiré de la liste.
Quelqu'un a déjà eu ce problème ?
Merci d'avance
Louis
Partager