bonjour,
Je voudrais trier mon tableau dans l'ordre inverse. C'est à dire quand j'ai fait un sort de mon tableau pour trier bien mon tableau, j'ai besoin d'inverser l'ordre. Autrement dit, que mon tableau soit trier du plus grand au plus petit. dans d'autres langages on a des méthodes comme:
rsort() ou encore reverse()
mais dans mon programme, il semble que ça n'existe pas... :/
Voici mon code:
//declaration de la methode ClassementMat
public static int ClassementMat(){
//declaration des variables de la methode ListingMat
String matiere, requete, numEtu;
float[] tab = new float[100];
ResultSet rs;
int update = -1, i=0, position=1;
System.out.println("Indiquez la matiere dont vous voulez le classement");
matiere = Clavier.readString();
try {
//connection
Connecter();
//requete de selection de l'etudiant
requete = "SELECT AVG(note) FROM not_NOTES WHERE matiere='"+matiere+"' GROUP BY numeroEtudiant ORDER BY note DESC";
rs = stmt.executeQuery(requete);
while(rs.next()){
tab[i] = rs.getFloat("AVG(note)");
Arrays.sort(tab);
Array.reverse();
System.out.println(position+". "+tab[i]);
position++;
i++;
}
//deconnection();
con.close();
}//fin try
catch (Exception e) {
e.printStackTrace();
}//fin catch
return update;
}//fin ClassementMat
En général, on travaille avec des listes d'objets ou des tableaux d'objet.
Dans ce cas, il faut utiliser la méthode : sort(Object, Comparator) http://java.sun.com/j2se/1.4.2/docs/api/java/util/Arrays.html#sort(java.lang.Object[],%20java.util.Comparator)
en implémentant un Comparator qui donne l'ordre inverse.
Exemple :
class MonObject {
String monNom;
public String getMonNom() { return monNom;}
}
MonObject[] monTableau = new ....
Arrays.sort(monTableau, new Compatator() {
int compare(Object o1, Object o2) {
MonObject m1 = (MonObject) o1;
MonObject m2 = (MonObject) m2;
return -m1.getMonNom().compareYTo(m2.getMonNom());
}
});
Il faut éventuellement adapter suivant la classe et le type de champ à comparer
Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script