Trier une arraylist

Résolu/Fermé
occhilupo Messages postés 8 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 15 novembre 2010 - 10 janv. 2008 à 13:53
 coffee - 4 juil. 2011 à 16:30
Bonjour,
j'ai un petit souci pour trier une arraylist, je m'explique j'ai une classe joueur :

public class Joueur {

int reg;
int departement;
int point;
String nom;
.......
}

puis une autre classe ou j'ai une arraylist de la classe Joueur

public class execl{

ArrayList Joueur=new ArrayList();
........
}

J'ajoute plusieurs Joueur à mon ArrayList avec la methode add(), puis je voudrais trier mon arraylist par ordre decroissant des points de chaque joueur, mais c'est je ne sais pas comment fair.

Est ce que quelqu'un pourrait m'aider??

Merci
occhi.
A voir également:

7 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
10 janv. 2008 à 14:51
Bonjour,

Il faut que ta classe joueur implémente l'interface IComparable.
Dans ta classe "joueur", il faudrait que tu crées une méthode compareTo(Joueur autreJoueur) qui renvoie 1 si le joueur "This" est plus grand que le joueur autreJoueur (grand au sens que tu désires), 0 si les joueurs sont à égalité, -1 sinon.

Ensuite, il te suffit, avec ton arraylist (que je n'appellerais pas Joueur à ta place ! Tu donnes le même nom qu'à la classe Joueur, ce n'est pas une bonne idée), d'appeler sa méthode .Sort()

Ce qui donnerait quelque chose comme ça pour la classe Joueur :
public class Joueur Implements IComparable {

int reg;
int departement;
int point;
String nom;
.......

   Public Int CompareTo(Joueur autreJoueur)
   {
      int resultat;
      if (this.point > autrejoueur.point)
         resultat = 1;
      if (this.point < autrejoueur.point)
         resultat = -1;
      if (this.point == autrejoueur.point)
         resultat = 0;
      return resultat;
   }
} 
Et comme ça pour ton arraylist :
public class execl{

ArrayList LesJoueurs = new ArrayList();
........
LesJoueurs.Add();
LesJoueurs.Add();
LesJoueurs.Add();
LesJoueurs.Add();
........
LesJoueurs.Sort();
} 
Si tu veux trier autrement, modifie juste la fonction CompareTo() pour mettre ce que tu veux dedans.

Xavier
38