IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème tri objet par ordre alphabétique


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut Problème tri objet par ordre alphabétique
    Bonsoir,

    Mon problème est que je voudrais pouvoir trier un vecteur d'objets par ordre alphabétique. Je m'explique, j'ai une classe "Promotion" et une classe "Etudiant" comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Promotion implements Comparable {
            private Vector<Etudiant> liste_etud = new Vector<Etudiant> ();
            private int annee;
     
            ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Etudiant { 
    	private String nom;
     
            public String getNom () {
    			return nom;
    	}
     
            ...
    Dans ma classe Promotion j'aimerai avoir une méthode qui me tri mon vecteur par ordre alphabétique par rapport aux nom de chaque étudiants qu'il contient. (J'espère jusque là avoir été bien clair).
    J'ai donc regarder la FAQ pour voir si il y avait un moyen de faire et je suis tomber la dessus:
    http://java.developpez.com/faq/java/...rierCollection
    Seulement cela ne marche pas . J'ai créer une méthode compareTo:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public int compareTo (Object other) {
    		    String etudiant1 = ((Promotion) other); //ici je ne pourrai accéder qu'à un seul étudiant du vecteur donc ça ne marchera pas.
    		    String etudiant2 = this.; //idem ici pour un autre
     
    		    if (etudiant1.compareTo(etudiant2) < 0) {
    		    	return -1; 
    		    }
    		    else if (etudiant1.compareTo(etudiant2) == 0) {
    		    	return 0; 
    		    }
    		    else {
    		    	return 1; 
    		    }
    	    }
    Cela ne peut marcher car je comparerai toujours les 2 mêmes étudiants.

    Ensuite j'ai beaucoup d'erreur qui s'affiche (j'utilise éclipse) qui sont:
    - au niveau de implements Comparable : Comparable est de type brut. Les références au type générique Comparable<T> doivent être paramétrées.
    - au niveau de Collections.sort (liste_etud); : Limite incohérente : La méthode générique sort(List<T>) de type Collections n'est pas applicable pour les arguments (List<Etudiant>). Le type
    déduit Etudiant n'est pas un substitut valide pour le paramètre lié <T extends Comparable<? super T>>

    Je pense qu'il doit y avoir un moyen simple. Auriez-vous un exemple à me donner svp ?

  2. #2
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    salut,

    ce sont des objets Etudiants que tu veux comparer, donc c'est ta classe Etudiant qui doit implémenter l'interface Comparable et définir la méthode compareTo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Etudiant implements Comparable<Etudiant>
    {
        ...
        public int compareTo(Etudiant e)
        {
            return nom.compareTo(e.getNom());
        }
        ...
    }
    jette un oeil ici :
    http://java.sun.com/docs/books/tutor...ces/order.html

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    Et donc je créer une méthode trier dans ma classe Promotion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void trierEtudiants () {
            List<Etudiant> list = liste_etud;
    	Collections.sort (list);
    }
    Et ça devrait marcher ?

  4. #4
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    ça devrait

    ben essayes pour voir !! et n'oublie pas d'enlever la méthode compareTo de la classe Promotion ( ou plutôt mets la en commentaire, on sait jamais )

  5. #5
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    La comparaison ne va pas porter sur les objets etudiants, mais plutôt sur leurs noms qui sont de type string.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    Justement c'est le but recherché. D'ailleurs cela marche très bien merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Tri étendu par ordre alphabétique sur un tableau aux dimensions dynamiques
    Par atk_49 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/03/2014, 15h03
  2. trier un tableau d'objets par ordre alphabétique
    Par lhapaipai dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/09/2010, 17h25
  3. Tri list par ordre alphabétique
    Par mbadjo79 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/04/2009, 10h01
  4. problème tri par ordre alphabétique
    Par bibi 8002 dans le forum Word
    Réponses: 17
    Dernier message: 18/06/2008, 15h21
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo