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

Java Discussion :

Tri d'objets par l'un des attributs des objets


Sujet :

Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut Tri d'objets par l'un des attributs des objets
    Bonjour,
    J'aimerais savoir s'il est possible de trier des objets par l'un de leur attribut. Dans mon programme, j'ai une classe Eleve ("Student") et j'aimerais trier des objets Student par leur note ("mark"). Je possède une autre classe FichierEleves dans laquelle je dispose d'une liste chainée d'élèves, et dans cette classe, j'aimerais implémenter la méthode de tri appelée SortByMark() mais je ne sais pas comment faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    public class Student {
        private String lastname;
        private String firstname;
        private int mark;
     
        public Student(){}
        public Student(String lastname, String firstname, int mark){
            this.lastname = lastname;
            this.firstname = firstname;
            this.mark = mark;
        }
     
        public int getMark(){
            return mark;
        }
        public void setMark(int newMark){
            this.mark = newMark;
        }
        public String getLastname(){
            return lastname;
        }
        public void setLastname(String newLastname){
            this.lastname = newLastname;
        }
        public String getFirstname(){
            return firstname;
        }
        public void setFirstname(String newFirstname){
            this.firstname = newFirstname;
        }
    Quelqu'un pourrait m'aider ? Merci...

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    Je réponds tout seul à ma question
    http://java.developpez.com/faq/java/...rierCollection

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    J'ai réussi à implémenter la méthode compareTo(Object o) pour trier ma liste chainée (LinkedList) par la note des élèves, mais si je veux à présent trier ma liste chainée par leur nom (j'aimerais pouvoir trier ma liste selon le critère que je veux), comment dois-je faire?
    Quelqu'un aurait une idée ??

    Merci d'avance pour vos réponses.

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Tu peux par exemple implémenter un Comparator suivant chaque attribut qui t'interesse, puis le passer comme second paramètre à Collections.sort . Il y a peut-être mieux comme solution.

    @+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    Très simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Collections.sort(myCollection, new StudentNameComparator());
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Collections.sort(myCollection, new StudentMarkComparator());
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import java.util.Comparator;
     
    public class StudentNameComparator implements Comparator<Student> {
     
    	public int compare(Student s1, Student s2) {
    		return s1.getLastname().compareTo(s2.getLastName());
    	}
     
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import java.util.Comparator;
     
    public class StudentMarkComparator implements Comparator<Student> {
     
    	public int compare(Student s1, Student s2) {
    		return new Integer(s1.getMark()).compareTo(s2.getMark());
    	}
     
    }
    A+

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    Merci pour cette belle info.
    Merci à vous tous!
    Ca marche!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/03/2014, 16h01
  2. Réponses: 2
    Dernier message: 01/03/2012, 15h56
  3. Normalisation des attributs des associations
    Par Cyanatide dans le forum Merise
    Réponses: 3
    Dernier message: 16/11/2011, 13h51
  4. [XSLT] test sur le commencement des valeurs des attributs
    Par mimiche_fr2000 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/02/2008, 13h03
  5. attribution des vlan à des adresses sous rseaux
    Par meriem_en dans le forum Développement
    Réponses: 1
    Dernier message: 27/06/2006, 15h13

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