Bonjour a tous,

voila,je veux trier une arraylist qui ne contient que des interfaces. la methode compareTo est implementée dans la classe qui implemente ISolution.

voici l'en tete de la declaration de l'interface :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
public interface ISolution extends java.lang.Comparable<ISolution>
l'entete et la methode compareTo qui implemente ISolution :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public class SolutionImpl implements ISolution {
 
	public int  compareTo(ISolution other) { 
 
	      double nombre1 = ((SolutionImpl) other).evaluer(); 
	      double nombre2 = this.evaluer(); 
	      if (nombre1 > nombre2)  return -1; 
	      else if(nombre1 == nombre2) return 0; 
	      else return 1; 
	 }
}
Et c'est ici que je trie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
//la liste à trier
protected java.util.List<ISolution> solutions;
//l'appel du trie
Collections.sort(solutions);
je n'ai aucun warning à la compilation, mais l'arraylist n'est pas trie et je ne vois pas trop pourquoi.

est ce un probleme dans la déclaration de mes classes ou de mes interfaces ou plus simplement un probleme sur la methode compareTo (methode que j'ai trouvé sur la faq, dc peu de chance qu'elle soit fausse) ?

Merci de votre aide